如果您只想使用 HTTP 作为传输机制,那么一切都会顺利进行。另一方面,如果你想开发一个真正的 RESTful API,你应该学习 REST。首先,考虑Richardson 成熟度模型。我不考虑 API RESTful,除非它是 3 级 API,但即使在 1 级,您也应该将 API 建模为一组资源。
每个资源都应该由一个唯一的 URL 标识,因此已经排除了 OP 中三个选项中的两个。
资源应该通过它们的 URL 来标识,但不是按照建议的那样。在第 2 级,动作由 HTTP 动词(GET
、POST
、DELETE
等)指示。因此,为了支持创建订单,我设想这样的 HTTP 请求:
POST /orders HTTP/1.1
Content-Type: application/json
{
"orderNumber": 1234
}
成功的请求应导致 200 范围内的响应(200 OK
、201 Created
等)。
相反,如果您想创建一个货件资源,您可以创建POST
一个shipments
收集资源:
POST /shipments HTTP/1.1
Content-Type: application/json
{
"orderNumber": 1234
}
类似的资源orders
通常shipments
被称为集合资源,因为它们代表其他资源的集合。它们通常仅支持POST
andGET
动词,其中GET
将枚举集合中的所有资源。
每次POST
针对集合资源通常会导致创建具有自己地址的“子资源”。例如,当您创建订单时,创建的地址可能是/orders/1234
. 这样的资源通常会支持GET
,DELETE
和可能PUT
, 但不支持POST
.
我强烈推荐 Allamaraju Subrahmanyam 的书RESTful Web Services Cookbook给任何想要进入 REST API 设计的人。它易于阅读并且充满实用的解决方案。