在构建我的Web服务的RESTful API时,我试图给客户端link relations,例如(这是GET入口点返回的内容):
<doc>
<links>
<link rel="self" href="/home"/>
<link rel="post" href="/post-new-article"/>
</links>
</doc>
我希望客户明白,为了发布新文章,他必须向/post-new-article
提交POST请求,"text"
作为查询参数。
但是我没有在文档中说"POST"
,我没有告诉他我期待的HTTP查询参数。我应该如何以及在何处提供此信息?关于它有任何事实上的标准/惯例吗?
答案 0 :(得分:2)
技术上正确的答案是它由文档的媒体类型定义。例如,假设API提供HTML。客户端是浏览器。
按照惯例,当用户代理(浏览器)访问资源(由锚标记标识)时,它会向服务API的服务器发出HTTP GET
。假设一切按计划进行,服务器返回该资源的另一个HTML表示。
同样,当用户代理提交表单时,默认情况下会发出HTTP GET
,除非method
标记的form
属性指示它应该POST
数据。 (详情here。)
您的API文档应详细说明REST服务使用的媒体类型。如果它是自定义类型,则规范应包括以下链接的规则。如果您的API通过HTTP运行,那么规则将指定GET
,POST
,DELETE
等,以及任何其他要求/约定。
罗伊本人:http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven