擅长:python、mysql、java
<p>顾名思义,URI不能“毫无保留”,因为URI规范是由REST架构风格指导的。如何使用URI会违反REST样式:</p>
<ol>
<li>不遵循“客户机-服务器”约束;例如,通过使用WebSocket实现服务器推送。在</li>
<li>不遵循“标识资源”约束;例如,使用URI的一部分来指定控制数据或资源元数据,而不是坚持标识资源,或者通过URI以外的机制(如会话状态或其他带外机制)标识资源。在</li>
<li>不遵循“通过表示来操纵资源”约束;例如,使用URI的querystring部分来传输状态。在</li>
<li>不遵循“自描述性消息”约束;例如,使用httpget修改状态,或传输内容类型为“text/html”的JSON。在</li>
<li>不遵循“超媒体作为应用程序状态的引擎”约束;例如,不提供要遵循的用户代理超链接,而是假设它将使用带外知识构造它们。在</li>
<li>不遵循“分层系统”约束,要求客户机了解服务器工作原理的内部细节(特别是要求客户机在请求中提供)。在</li>
</ol>
<p>以上这些都不一定是错误的选择。它们可能是系统的最佳选择,因为它们促进了某些体系结构属性(例如效率或安全性)。它们只是不是REST风格的一部分。在</p>
<p>您的资源由多个强制段标识这一事实是URI设计的重要组成部分。正如Anton所指出的,在<code>example.com/request/distribution?acct=123&date=20030102&distcode=1A;1B;1C</code>和{<cd2>}之间的选择纯粹是数据设计的一个问题,而不是URI层本身的问题。例如,对前者的PUT、POST或DELETE请求作出响应没有什么错。一个客户端如果没有跟踪到其中任何一个的链接,将被视为断开。如果一个系统希望通过超媒体响应以外的其他方式向客户提供其中一个,则该系统将被视为“无反应”。在</p>