Api Blueprint 可以理解的二维键值格式是什么?
What is a 2-dimensional key-value format that Api Blueprint can understand?
我正在使用 Api 蓝图为 RESTful 搜索 API 开发 api 文档。我希望能够将过滤器传递给 API 这样我就可以 assemble:
filter[filtername1]=filtervalue1
filter[filtername2]=filtervalue2
对于这个问题,我使用了百分比编码的方括号,但与这个问题不同的是,我们不可能描述每个可能的键名:
How to format hash-based parameters in the URL when creating Blueprint API doc?
我希望键名是可变的,因为它可以是源数据中的任何字段。这个有用吗?
## Key-Value-Test [/api/v1/keyvaluetest?term={term}&filter%5B{field_name}%5D={field_value}]
+ term
+ filter_field
+ filter_value
像这样的二维数组有推荐的格式吗?这似乎在 Dredd 中不起作用,因为 + filter_field
并不真正匹配 filter[filter_field]
恐怕 API Blueprint 和 Apiary 还不允许这些动态 URL 定义。
API Blueprint 和 Apiary 仅允许 RFC 6570
中定义的 URI 模板
根据该 RFC
,以下 URI 模板无效
GET /resource?year={year}&month={month}
您可以更改 URL 以定义如下内容:
## Key-Value-Test [/api/v1/keyvaluetest{?term,field_name,field_value}]
+ Parameters
+ term: a
+ field_name: b
+ field_value: c
此方法有两个注意事项:
- 您只能为参数指定一个字段名称和字段值。如果你想要更多的字段参数,你必须扩展 URL.
- 您必须更改 API url,我认为您不会想要这样做。
如果您有任何功能请求,请在 http://support.apiary.io 开始。
API 蓝图使用 URI Templates standard. There are ways to express and expand arrays (see section 3.2.1),但是,它需要“标准 URI 方法”,这意味着 URI 将按如下方式扩展:
/api/v1/keyvaluetest?term=yourterm&filter=filtervalue1&filter=filtervalue2
这是处理数组的“标准”方式,除了最流行的网络语言在 2000 年代流行起来。
模板是为扩展而设计的:给它一堆变量和一个字符串,你就会得到一个格式正确的字符串。据我所知,没有“狂野匹配”(在字符串中的某个位置插入模式匹配变量)。
在 URL 模板领域,我能想到的唯一解决方案是利用爆炸修改器(参见 composite values):
/api/v1/keyvaluetest{?keys*}
其中,给定值的关联数组 [(filter%5Bfiltername1%5D, filtervalue1), (filter%5Bfiltername2%5D, filtervalue2) ]
应该 正确扩展。
但是,我不确定如何在 MSON 中指定它们,因为我认为不支持“动态键”,而且我认为大多数工具都无法处理它(还).
可能是 worth asking.
我正在使用 Api 蓝图为 RESTful 搜索 API 开发 api 文档。我希望能够将过滤器传递给 API 这样我就可以 assemble:
filter[filtername1]=filtervalue1
filter[filtername2]=filtervalue2
对于这个问题,我使用了百分比编码的方括号,但与这个问题不同的是,我们不可能描述每个可能的键名:
How to format hash-based parameters in the URL when creating Blueprint API doc?
我希望键名是可变的,因为它可以是源数据中的任何字段。这个有用吗?
## Key-Value-Test [/api/v1/keyvaluetest?term={term}&filter%5B{field_name}%5D={field_value}]
+ term
+ filter_field
+ filter_value
像这样的二维数组有推荐的格式吗?这似乎在 Dredd 中不起作用,因为 + filter_field
并不真正匹配 filter[filter_field]
恐怕 API Blueprint 和 Apiary 还不允许这些动态 URL 定义。
API Blueprint 和 Apiary 仅允许 RFC 6570
中定义的 URI 模板根据该 RFC
,以下 URI 模板无效GET /resource?year={year}&month={month}
您可以更改 URL 以定义如下内容:
## Key-Value-Test [/api/v1/keyvaluetest{?term,field_name,field_value}]
+ Parameters
+ term: a
+ field_name: b
+ field_value: c
此方法有两个注意事项:
- 您只能为参数指定一个字段名称和字段值。如果你想要更多的字段参数,你必须扩展 URL.
- 您必须更改 API url,我认为您不会想要这样做。
如果您有任何功能请求,请在 http://support.apiary.io 开始。
API 蓝图使用 URI Templates standard. There are ways to express and expand arrays (see section 3.2.1),但是,它需要“标准 URI 方法”,这意味着 URI 将按如下方式扩展:
/api/v1/keyvaluetest?term=yourterm&filter=filtervalue1&filter=filtervalue2
这是处理数组的“标准”方式,除了最流行的网络语言在 2000 年代流行起来。
模板是为扩展而设计的:给它一堆变量和一个字符串,你就会得到一个格式正确的字符串。据我所知,没有“狂野匹配”(在字符串中的某个位置插入模式匹配变量)。
在 URL 模板领域,我能想到的唯一解决方案是利用爆炸修改器(参见 composite values):
/api/v1/keyvaluetest{?keys*}
其中,给定值的关联数组 [(filter%5Bfiltername1%5D, filtervalue1), (filter%5Bfiltername2%5D, filtervalue2) ]
应该 正确扩展。
但是,我不确定如何在 MSON 中指定它们,因为我认为不支持“动态键”,而且我认为大多数工具都无法处理它(还).
可能是 worth asking.