天道酬勤,学无止境

使用 Apiary 创建模拟服务 API(Create Mock Service API using Apiary)

问题

我正在尝试创建用于测试目的的模拟 api 服务。 我们已经在另一个团队中使用 Apiary,所以我从那里开始。

到目前为止,我注意到如果我想要两个单独的调用需要模拟两个请求。 例如,要获取 ID 为 1 和 2 的注释,需要明确写出如下响应:

/notes/1 /notes/2

有没有办法避免这种情况? 不可否认,我仍在努力创建蓝图。

回答1

看看 private-e9e59-pingdomcheck.apiary-mock.com/v1/gists/1。 这里的数字1{id} 。 您当然只能得到一般定义的响应(就像我使用 id 42 一样)。

现在在 MSON 中有更多的事情要做。 一旦发布,请求中不同参数的不同回复将是可能的。

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Create Mock Service API using Apiary
    I'm attempting to create mock api services for testing purposes. We are already using Apiary on another team so I'm starting there. So far, I've noticed that if I want to have two separate calls requires mocking out of both requests. For example to get the notes with ids 1 and 2 requires explicitly writing out responses like: /notes/1 /notes/2 Is there a way to avoid this? Admittedly I'm still ramping up on creating blueprints.
  • How to add API version to Apiary Mock Server
    Is there any way to add API version to Apiary Mock Server? Ex.: http://private-XXXXX-apiname.apiary-mock.com/v1/mocks/1?school_id=1
  • 效率专精:前后端分离实践中如何提升RestAPI开发效率【建议精读】
    团队内部RestAPI开发采用设计驱动开发的模式,即使用API设计文档解耦前端和后端的开发过程,双方只在联调与测试时耦合。在实际开发和与前端合作的过程中,受限于众多因素的影响,开发效率还有进一步提高的空间。本文的目的是优化工具链支持,减少一部分重复和枯燥的劳动。 现状梳理 前后端工作流 需求理解:前后端先理解产品思路、需求的详细内容 敲定接口:后端出API设计文档初稿,与前端面对面或者在线讨论修正,接着后端(有时是前端)把API描述记录到公司内部的API文档库(在线markdown编辑器,提供分级目录的存储功能,对如何描述API没有一定的标准,因此描述格式不统一,因人而异1)。接着根据双方工作的安排,约定联调时间 独立开发:双方独立开发(也有可能非完全独立开发,如需要对方的环境配合等;或者存在返工,如API设计发生变更等) 系统联调:测试API基本功能和双方系统的连通性 测试回归:开发或者QA编写测试用例并测试业务流程 可优化方向 1. 减少文档编写时间 根据个人的开发经验,后端编写API设计文档时常见的情况有:如果是简单的需求,API数量较少,后端直接通过内部即时通信软件和前端沟通;如果是复杂的需求,API数量较多,后端会先把API描述写到本地临时文档(纯文本、markdown、evernote等)或者内网(内部个人Wiki、git仓库)中
  • 使用 API 蓝图记录查询参数(Documenting query parameters with API Blueprint)
    问题 我正在尝试在 API Blueprint 中记录查询参数,但我不完全确定我是否正确完成了它。 资源看起来像这样: DELETE http://baasar.apiary-mock.com/user/{appId}/{userId} 该请求将停用用户,而以下内容将删除用户对象: DELETE http://baasar.apiary-mock.com/user/{appId}/{userId}?force=true 这是我为此的蓝图降价: ## User [/user/{appId}/{userId}] Handle user objects + Parameters + appId (required, number, `1`) ... Application ID (`appId`) + userId (required, number, `1`) ... Numeric `userId` of the User object to manage ### Remove an User [DELETE] + Parameters + force (optional, boolean, `false`) ... Set to `true` to remove instead of deactivate + Response 204 但是,当使用 Apiary 渲染它时
  • AngularJS 量角器 E2E 模拟(AngularJS Protractor E2E Mocking)
    问题 我有一个 Angular SPA 从节点后端检索其数据。 由于节点项目完全被测试覆盖,我想模拟 Angular HTTP 调用。 (我不想开始讨论一般的功能/烟雾测试,谢谢)。 我想要的是s.th。 像这样 Api = $injector.get('Api'); sinon.mock(Api, 'getSomethingFromServer').andRespondWith({foo: 'bar'}) assert(Api.getSomethingFromServer.wasCalledOnce); 但无论如何我都找不到好的解决方案。 我发现了几个关于同一问题的帖子。 比如这个。 由于量角器变化很大且频繁,我只想在这里询问是否有人找到了模拟 HTTP 请求的适当解决方案。 回答1 我们目前正在使用 http://apiary.io 除了能够“模拟”您的回复之外,您还可以获得一个不错的 API 描述作为奖励! 我们所做的是针对代理运行 Angular 应用程序,这取决于我们是在开发中还是在生产中,可以转发到真正的后端或 apiary 提供的后端。 回答2 我同意之前的回答。 对于 Protractor 频繁更改的解决方案是将后端与被测系统完全去相关,无论它是模拟、存根还是假的。 困难在于保持与真实后端的强一致性,但并不是说这比试图保持不断变化的 angular
  • 方形改装服务器模拟测试(Square retrofit server mock for testing)
    问题 使用方形改造框架时,模拟服务器进行测试的最佳方法是什么。 可能的方式: 创建一个新的改装客户端,并在RestAdapter.Builder()。setClient()中进行设置。 这涉及解析Request对象,并将json作为Response对象返回。 将这个带注释的接口实现为模拟类,并使用它代替RestAdapter.create()提供的版本(不会测试gson序列化) ? 理想情况下,我想让模拟服务器提供json响应,以便我可以同时测试gson序列化。 任何例子将不胜感激。 回答1 模拟翻新2.0请求测试 由于旧的机制(例如,创建MockClient类并从Client实现它)在Retrofit 2.0中不再起作用,因此在此我描述了一种新的实现方式。 您现在需要做的就是为OkHttpClient添加自定义拦截器,如下所示。 FakeInterceptor类仅覆盖intercept方法,如果应用程序处于DEBUG模式,则返回给定JSON。 RestClient.java public final class RestClient { private static IRestService mRestService = null; public static IRestService getClient() { if(mRestService == null) { final
  • Documenting query parameters with API Blueprint
    I'm trying to document a query parameter in API Blueprint, but I'm not entirely sure if I have done it correctly. The resource looks like this: DELETE http://baasar.apiary-mock.com/user/{appId}/{userId} That request would deactivate the user while the following would delete the user object: DELETE http://baasar.apiary-mock.com/user/{appId}/{userId}?force=true This is the Blueprint markdown I have for this: ## User [/user/{appId}/{userId}] Handle user objects + Parameters + appId (required, number, `1`) ... Application ID (`appId`) + userId (required, number, `1`) ... Numeric `userId` of the
  • 如何使用 apiary 记录多部分请求?(How do I document a multipart request with apiary?)
    问题 我想记录一个多部分请求,如下所示: Content-Length: 477 Content-Type: multipart/form-data; boundary=---BOUNDARY -----BOUNDARY Content-Disposition: form-data; name="image[file]"; filename="image.jpg" Content-Type: image/jpeg Content-Transfer-Encoding: base64 /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAABAAEDASIA AhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAf/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFAEB AAAAAAAAAAAAAAAAAAAAAP
  • Good rest code generation and documentation tool [closed]
    Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers. Want to improve this question? Update the question so it's on-topic for Stack Overflow. Closed 4 years ago. Improve this question I have been considering a documentation tool for building a backend for a web service to be used in multiple clients along with OAuth and possibility of multiple revisions. I already knew about apiary but doing a little research I found other considerably good solutions with lucrative promises. RAML seems to be promising good code generation and api reusability. But
  • 是否可以将表格放在markdown文件中居中?(Is it possible to center tables in a markdown file?)
    问题 我有一张桌子: | This | Is | A | Table | | :--- | -- | - | ----: | | foo | ba | r | elbaT | 我希望表格显示在Markdown文件的中心,而不是左对齐。 我不是要对齐文本,而是要对齐整个表格本身。 我需要依靠HTML / CSS来实现自己想要的吗? 这是针对Apiary.io项目的。 回答1 如果您使用标准文档,请使用<center>标签。 蓝图 FORMAT: 1A HOST: http://www.google.com # Tables Notes API is a *short texts saving* service similar to its physical paper presence on your table. <center> | Tables | Are | Cool | |----------|:-------------:|------:| | col 1 is | left-aligned | $1600 | | col 2 is | centered | $12 | | col 3 is | right-aligned | $1 | </center> # Group Notes (...) 预习 如果您使用“新文档” ,则无法将表格居中(因为表格占据了整个列的宽度)
  • Does Apiary.io and/or API Blueprint support api versioning?
    Does api blueprint or Apiary.io support the notion of versioning your API? In particular, I'm versioning my API via the URI like this: GET /api/v2/SomeResource/ In the example above, this means I'm calling version 2 ("v2") of the API. Does api blueprint support this? How can I document multiple versions of a given action or the entire API?
  • 良好的代码生成和文档编制工具[关闭](Good rest code generation and documentation tool [closed])
    问题 关闭。 此问题不符合堆栈溢出准则。 它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow的主题。 4年前关闭。 改善这个问题 我一直在考虑使用一种文档工具来构建Web服务的后端,以便与OAuth和多个修订版本一起在多个客户端中使用。 我已经对养蜂场有所了解,但是做了一些研究后,我发现了其他相当不错的解决方案,而且利润丰厚。 RAML似乎有望带来良好的代码生成和api可重用性。 但是它似乎无法创建模拟服务器。 而且我不明白为什么apiblueprint无法用于生成REST API的客户端库和服务器端框架。 对我们来说,最好的用例是在api的文档中,可以自动生成用于消费该服务的客户端iOS / Android / wp / js库,以及可以提供编写代码框架的节点express / restify应用。 以及api测试和负载测试。 RAML / Swagger / Apiary中的哪个解决方案最适合此? 回答1 请查看Swagger Codegen(免费,开源),它可以生成不同语言的服务器存根和API客户端。 许多公司/项目正在生产中使用它:https://github.com/swagger-api/swagger-codegen#companiesprojects-using-swagger-codegen 支持的语言/框架: API客户端
  • 使用httpClient.GetAsync时添加标题(Adding headers when using httpClient.GetAsync)
    问题 我正在Windows Store应用程序项目中实现由Apiary.io的其他同事制作的API。 它们显示了我必须实现的方法示例: var baseAddress = new Uri("https://private-a8014-xxxxxx.apiary-mock.com/"); using (var httpClient = new HttpClient{ BaseAddress = baseAddress }) { using (var response = await httpClient.GetAsync("user/list{?organizationId}")) { string responseData = await response.Content.ReadAsStringAsync(); } } 在这种方法和其他方法中,我需要具有一个标头,该标头带有我之前获得的令牌。 这是邮递员(chrome扩展名)的图片,其中包含我正在谈论的标头: 如何将“授权”标头添加到请求中? 回答1 当将GetAsync与HttpClient一起使用时,您可以像这样添加授权标头: httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "Your Oauth
  • 为我们在 Apiary.io 中的每个响应指定描述(Specify description for every response we have in Apiary.io)
    问题 是否可以为某个请求的每个响应指定描述? 假设,我们有一个请求 ### Retrieve resource [GET] + Headers If-None-Match: "Version1" 和 2 个回复 + Response 200 (application/xml) + Headers ETag: "Version2" + Body <Xml> <A> <B /> <C /> </A> </Xml> + Response 304 (application/xml) 我想要的是在此处指定描述(请注意+ Response行下的注释): + Response 200 (application/xml) In case if the resource hasn't changed + Headers ETag: "Version2" + Body <Xml> <A> <B /> <C /> </A> </Xml> + Response 304 (application/xml) In case if the resource has changed 是否可以? 回答1 目前没有办法在 API Blueprint 中表达这样的逻辑。 您始终可以在相应的响应中或在动作本身下“通过口”来描述它。 例如: # Resource [/1] ## Action [GET]
  • 量角器的模拟和存根(Mocking and Stubbing with protractor)
    问题 我想用量角器测试我的角度应用程序。 该应用程序具有与服务器通信的API模块。在这些测试中,我想模拟此Api模块。 我不想进行完整的集成测试,但是要从用户输入中进行测试,并从API中获得期望的值。 这不仅可以使客户端测试更快,还可以让我测试边缘情况,例如连接错误。 我该如何用量角器做到这一点? 我刚刚开始设置集成测试。 我使用了npm量角器模块,安装了硒,调整了默认配置,并使用onProtractorRunner.js来验证我的设置是否有效。 推荐的模拟方法是什么? 我假设模拟必须在浏览器中完成,而不是直接在测试文件中完成。 我假设测试文件中的命令是量角器专用的,并且将被发送到硒运行器。 因此,在会话和测试期间,我无法共享javascript对象。 我以某种方式期望我需要一个像sinon.js这样的间谍库,或者它已经包含在量角器中了? 编辑:我在量角器问题跟踪器中阅读了有关此问题的信息,这可能是实现此问题的一种方法。 基本上,您在测试中编写了一个模拟模块,该模块被发送以在浏览器/应用程序范围内执行。 编辑:这是更有希望的问题。 第一部分谈到了将Mocks添加到Angular App中。 第二部分谈论嘲弄后端。 这看起来真的很好,在这种情况下,Angular App将保持其原始形式。 但是,这目前仅适用于已弃用的ng-scenarios。 回答1
  • 如何在Go中的POST请求中发送JSON字符串(How do I send a JSON string in a POST request in Go)
    问题 我尝试使用Apiary,并制作了一个通用模板以将JSON发送到模拟服务器并具有以下代码: package main import ( "encoding/json" "fmt" "github.com/jmcvetta/napping" "log" "net/http" ) func main() { url := "http://restapi3.apiary.io/notes" fmt.Println("URL:>", url) s := napping.Session{} h := &http.Header{} h.Set("X-Custom-Header", "myvalue") s.Header = h var jsonStr = []byte(` { "title": "Buy cheese and bread for breakfast." }`) var data map[string]json.RawMessage err := json.Unmarshal(jsonStr, &data) if err != nil { fmt.Println(err) } resp, err := s.Post(url, &data, nil, nil) if err != nil { log.Fatal(err) } fmt.Println("response
  • Adding headers when using httpClient.GetAsync
    I'm implementing an API made by other colleagues with Apiary.io, in a Windows Store app project. They show this example of a method I have to implement: var baseAddress = new Uri("https://private-a8014-xxxxxx.apiary-mock.com/"); using (var httpClient = new HttpClient{ BaseAddress = baseAddress }) { using (var response = await httpClient.GetAsync("user/list{?organizationId}")) { string responseData = await response.Content.ReadAsStringAsync(); } } In this and some other methods, I need to have a header with a token that I get before. Here's an image of Postman (chrome extension) with the header
  • 在哪里放置资源特定的逻辑(where to place resource specific logic)
    问题 你能帮我考虑在 AngularJS 中放置资源(服务)特定业务逻辑的位置吗? 我觉得在我的资源上创建一些类似模型的抽象应该很棒,但我不确定如何。 API调用: > GET /customers/1 < {"first_name": "John", "last_name": "Doe", "created_at": '1342915200'} 资源(在 CoffeScript 中): services = angular.module('billing.services', ['ngResource']) services.factory('CustomerService', ['$resource', ($resource) -> $resource('http://virtualmaster.apiary.io/customers/:id', {}, { all: {method: 'GET', params: {}}, find: {method: 'GET', params: {}, isArray: true} }) ]) 我想做类似的事情: c = CustomerService.get(1) c.full_name() => "John Doe" c.months_since_creation() => '1 month' 非常感谢您的任何想法。 亚当 回答1
  • Google Auth runs in Visual studio but hangs when deployed to IIS
    I am working with the Google .Net client library. The way it works is when a user wants to authenticate to Google the library spawns a new webpage for the user to authenticate with. System.Diagnostics.Process.Start(authorizationUrl); My code using the library credential = GoogleWebAuthorizationBroker.AuthorizeAsync( GoogleClientSecrets.Load(stream).Secrets, scopes, userName, CancellationToken.None).Result; If I run this locally via Visual studio it works fine. However if I try to deploy it just hangs. If run it using Visual studio using Local IIS. I get the following error. System.Exception
  • 如何根据Angular2中的特定构建环境注入不同的服务?(How to inject different service based on certain build environment in Angular2?)
    问题 我有HeroMockService将返回HeroService数据和HeroService将调用后端服务以从数据库中检索英雄。 假设Angular2有编译环境,我打算注入HeroMockService到AppComponent如果当前构建环境是"dev-mock" 。 如果当前构建环境是"dev-rest" , HeroService应注射到AppComponent代替。 我想知道我怎样才能做到这一点? 回答1 IMO,更好的选择是使用 angular-in-memory-web-api。 注意:此项目已从其旧位置拉入 angular/angular。 它模拟Http使用的后端,因此它不会进行实际的 XHR 调用,而是获取您提供给它的数据。 要获得它,只需安装 npm install --save angular-in-memory-web-api 要创建数据库,请在InMemoryDbService实现createDb方法 import { InMemoryDbService } from 'angular-in-memory-web-api' export class MockData implements InMemoryDbService { let cats = [ { id: 1, name: 'Fluffy' }, { id: 2, name: