<p>最好先根据资源而不是uri创建restfulapi。它与你的数据设计有关,而不是你选择的语言。在</p>
<p>例如,你有一个分销资源。您希望在基于web的API中表示它,因此它需要有一个适当的惟一资源标识符(URI)。它应该简单易读,不太可能改变。这是个不错的例子:</p>
<pre><code>http://example.com/api/distribution/<some_unique_id>
</code></pre>
<p><strong>在将更多内容和层次结构放入uri之前,请三思而后行。在</p>
<p>您不希望随着数据模型或身份验证方案的发展而更改uri。更改uri对您和使用API的开发人员来说是<a href="http://www.w3.org/Provider/Style/URI.html" rel="nofollow">uncool</a>的痛苦。因此,如果您需要将身份验证传递到后端,您可能应该使用GET参数或HTTP头(例如,aws3api,<a href="http://docs.amazonwebservices.com/AmazonS3/latest/dev/RESTAuthentication.html#RESTAuthenticationQueryStringAuth" rel="nofollow">allows both</a>)。在</p>
<p>对GET参数(例如,<code>http://example.com/api/distribution/?id=<some_unique_id></code>)投入太多似乎是个坏主意,但在我看来,这并不重要[0]——只要你保持API文档的可访问性和最新性。在</p>
<p>[0]更新:至少对于只读API。对于crudapi,正如@daniel所指出的,当您拥有如上面第一个示例中那样的端点时,它会更加方便。这样,您就可以很好地使用HTTP方法,方法是为<code>/api/distribution/<id></code>上的单个资源启用GET、PUT、DELETE,并将POST to <code>/api/distribution</code>来创建新的发行版。在</p>
<p>在研究答案时,发现了一个关于restfulapi的很好的演示:<a href="http://www.slideshare.net/Wombert/designing-http-interfaces-and-restful-web-services-phpday11-20110514" rel="nofollow"><strong>Designing HTTP Interfaces and RESTful Web Services</strong></a>。在</p>