我正在使用Api Blueprint为RESTful搜索API开发api文档.我希望能够将过滤器传递给API,以便我可以组装:
filter[filtername1]=filtervalue1
filter[filtername2]=filtervalue2
Run Code Online (Sandbox Code Playgroud)
根据这个问题,我使用了百分比编码的方括号,但与这个问题不同,我们不可能描述每个可能的键名:
创建Blueprint API doc时如何在URL中格式化基于哈希的参数?
我希望密钥名称是可变的,因为它可以是源数据中的任何字段.这有用吗?
## Key-Value-Test [/api/v1/keyvaluetest?term={term}&filter%5B{field_name}%5D={field_value}]
+ term
+ filter_field
+ filter_value
Run Code Online (Sandbox Code Playgroud)
这样的二维数组是否有推荐的格式?这似乎不适用于Dredd,因为+ filter_field它不匹配filter[filter_field]
我目前正试图描绘一个现有的API apiary.io.系统通过登录请求实现身份验证,该请求返回包含会话ID的http-cookie.
据我所知,标准是浏览器在发出另一个请求时将之前从主机收到的所有http-cookies发送回给他.
看来,在运行我的蓝图文件生成的测试时,Dredd不会这样做.因此,任何需要用户登录的请求都无法正常进行测试.
是否有可能将请求标记为"在运行此请求之前需要"以强制Dredd管理这些http-cookies?
顺便说一句,REST服务是在Sails.js一个mvc框架中实现的node.js.
我创建了一个API,提供名为"Thumbnail"的资源(/缩略图)
{
"name": "toto",
"uri": "http://xxx"
}
Run Code Online (Sandbox Code Playgroud)
另一方面,我有多个资源,其中包含缩略图资源(如/ articles,/ videos ...):
{
"name": "playlist",
"thumbnail":
{
"name": "toto",
"uri": "http://xxx"
}
}
Run Code Online (Sandbox Code Playgroud)
当我在BluePrint markdown中编写这些web服务的模式时,我希望能够重用我为Thumbnail模式创建的模式,以便不重复模式中的代码.我对Trait功能很感兴趣(https://github.com/apiaryio/api-blueprint/issues/47),但我不知道它是否符合我的需求,是否适用于aglio和dredd.
你知道在我的情况下做的最好的事情吗?
我根据 DREDD 的规范测试我的 Api(考虑到Dredd 支持的痛苦限制,用 Openapi3 编写)。不,我有一个端点,如果 Accept-header 设置为如此,它会生成 CSV 数据。
'/my-endpoint':
summary: ...
description: ...
get:
# parameters:
# -
# in: header
# name: Accept
# description: "Response format: application/json or text/csv"
# example: "text/csv"
responses:
'200':
description: ...
content:
text/csv:
schema:
type: string
example:
summary: 'csv table'
value: 'cell1, cell2'
Run Code Online (Sandbox Code Playgroud)
当我使用 Dredd 运行测试时,测试失败并显示
expected:
headers:
body:
[
{
"key": "summary",
"value": "csv table"
},
{
"key": "value",
"value": "cell1, cell2"
}
]
statusCode: 200
Run Code Online (Sandbox Code Playgroud)
显然存在一些误解,Dredd …
我正在使用Dredd来测试我编写的API.它工作正常,直到我尝试改变资源中的动作uri.当我有一个表格的动作
## Retrieve Task [GET /task/{id}]
Run Code Online (Sandbox Code Playgroud)
它向]附加的Drakov发送请求.这个Drakov服务器正在运行蓝图文档.
Drakov 0.1.16 Listening on port 8090
[LOG] GET /task/myid]
[LOG] DELETE /task/myid]
[LOG] GET /task/myid]
Run Code Online (Sandbox Code Playgroud)
你可以看到这个请求最后有一个额外]的.
这是我的蓝图.它是Api Blueprint示例中示例的一个子集:
FORMAT: 1A
# Advanced Action API
A resource action is – in fact – a state transition. This API example demonstrates an action - state transition - to another resource.
## API Blueprint
# Tasks [/tasks/tasks{?status,priority}]
+ Parameters
+ status `test` (string)
+ priority `1` (number)
## Retrieve Task …Run Code Online (Sandbox Code Playgroud)