我认为我对 RESTful 架构的原则有很好的把握,但我还没有做到。
我似乎无法弄清楚的部分是客户端如何知道每个资源可以使用哪些 HTTP 方法?当应用程序流程中需要特定操作来继续流程时,该怎么办?
简化示例:
假设客户向我的 REST API 下一个简单的订单。
客户端将向:http ://api.mycompany.com/orders 发出 post 请求
请求有效载荷
<order>
<items>
<sku>12345</sku>
<quantity>1</quantity>
</items>
</order>
假设请求成功
响应负载
<order>
<id>156</id>
<status>Pending Payment</status>
<items>
<sku>12345</sku>
<quantity>1</quantity>
</items>
<links>
<link rel="order" url="http://api.mycompany.com/orders/156" />
<link rel="invoice" url="http://api.mycompany.com/payments/156" />
<link rel="payment" url="http://api.mycompany.com/invoices/156" />
</links>
</order>
如果我正确理解了超媒体约束,我会提供相应的资源,客户可以选择从那里去哪里。
在上面的示例中,带有 rel="order" 的链接可以是GET、PUT或DELETE请求。rel="invoice" 的链接仅限于GET请求。rel="payment" 的链接只接受POST请求。
客户怎么知道这个?我知道如果他们向上述资源之一发出OPTIONS请求,它应该为他们提供可用的方法,但我不确定这是否是处理这种情况的标准方法。
任何帮助将不胜感激。