使用 API 蓝图记录查询参数

Posted

技术标签:

【中文标题】使用 API 蓝图记录查询参数【英文标题】:Documenting query parameters with API Blueprint 【发布时间】:2014-04-03 18:12:03 【问题描述】:

我正在尝试在 API 蓝图中记录一个查询参数,但我不完全确定我是否正确地完成了它。资源如下所示:

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 渲染它时,我只在参数列表中看到 force,但它现在显示在示例 URL 中。这只是我对 GUI 的误解还是应该以其他方式记录查询参数?

【问题讨论】:

【参考方案1】:

您的蓝图非常好,问题是当前的 Apiary 文档没有正确处理 URI 参数。

你能试试new documentation吗?它应该正确处理 URI 参数。

编辑

正确的 URI 模板应该是:

http://baasar.apiary-mock.com/user/appId/userId?force

【讨论】:

非常感谢您的回答。我应该说我已经使用了新文档。令我困惑的是,“资源参数”和“动作参数”之间没有分离。所以我认为在上面的例子中并不清楚force放在哪里。 我已将资源定义更改为类似于 ## User [/user/appId/userId?force=bool](如果 force 不存在,我会在 Apiary 语法中出现错误)。这对于 DELETE 动词来说看起来非常好,但它让我在同一资源中的 GET 动词看起来很奇怪,因为它不支持 force 参数。 您可以在此处使用“列出所有注释”和“创建注释”查看所需的行为:docs.queryparameters.apiary.io/?3ColumnDocumentation=1 只是没有文档支持新的 URI 模板行为,因此没有人知道如何使用它。 :-/ 公平点@james-h;我会将其添加到规范中github.com/apiaryio/api-blueprint/issues/79 @Baggz 离题,但那是什么主题?【参考方案2】:

我的curl请求:

curl -k -u username:password https://api.techie8.io/api/1.0/bits?bit_type=1

养蜂场蓝图:

## Bits Collection [/bits?bit_type=bit_type]

### List Latest bits [GET]

List all bits recently inserted into database.

+ Parameters
    + bit_type (number, optional, `1`) ... Type of bit to retrieve: 1: Bits, 2: Newsletter

【讨论】:

以上是关于使用 API 蓝图记录查询参数的主要内容,如果未能解决你的问题,请参考以下文章

网址中的帆蓝图查询不起作用

Apiary 多个蓝图文件合并为一个 api

尝试使用 API 蓝图中的数据结构来描述请求和响应

UE4 常用API记录

使用记录集中的字段作为每个查询的参数,为记录集中的每条记录运行和追加查询

NHibernate - 如何使用参数值记录命名参数化查询?