0

假设我有狗和猫,他们有color和。每个动物都可以仅使用 和一起识别,当然,它们的和不是唯一的,含义可以具有相同的值。将来可能会添加一些其他动物类型。weightnamecolorweightnamecolorsweightsnames

您将在 Web REST API 服务中使用什么 URI 进行 CRUD 操作?

/api/v1/animals/dogs/black/12/jack    
/api/v1/animals/type/dogs/color/black/weight/12/name/jack
/api/v1/animals?type=dogs&color=black&weight=12&name=jack  

或者是其他东西?

4

2 回答 2

1

大部头书

/api/v1/animals?type=dogs&color=black&weight=12&name=jack

最有意义。使用 RESTful API,您可以访问资源,这里的资源是“动物”。其他字段实际上是人类可解释的属性,而不是用于取回单个动物的唯一标识符。

为了使其更简洁,您可能需要考虑为每只动物提供一个标识符来检索资源 /api/v1/animals/{id} 并将其他 API 视为搜索。

于 2013-10-02T03:13:45.063 回答
0

更新:

URL 应该用于指定 API 要管理的“资源”。

资源是“动物”(猫/狗/……),它们由类型/颜色/重量/名称唯一标识。

在进行 URL 设计之前,需要定义“业务”操作;否则,URL 的设计方式无关紧要。

假设您将需要以下业务操作

  • A) 创造动物
  • B) 获取动物的信息
  • C) 获取所有或部分动物的信息
  • D) 更新动物

如果提供好处,仍然可以使用(生成)id;否则,它可以保存在服务器端而不暴露给客户端。无论哪种方式它仍然有效..

A) 创造动物

POST: /api/v1/animals/dogs/black/12/jack/
RETURN: id: <id>

或者

POST: /api/v1/animals/dogs 
BODY: {‘color’ : ‘black’, ‘name’ : ‘jack’, ‘weight’ : 12 } 
RETURN: id: <id> 

B) 获取动物的信息

GET: /api/v1/animals/<id>/

或者

GET: /api/v1/animals/dogs/black/12/jack/

C) 获取所有或部分动物的信息

GET: /api/v1/animals/dogs/

或者

GET: /api/v1/animals/dogs/black/

D) 更新动物

PUT: /api/v1/animals/<id>
BODY: {‘name’ : ‘jackjunior’}

或者

PUT: /api/v1/animals/dogs/black/12/jack/
BODY: {‘name’ : ‘jackjunior’}

设计愉快!

于 2013-10-03T15:30:27.337 回答