假设我有狗和猫,他们有color,weight和name。每种动物都可以一起使用color,weight和name来识别,当然,它们的colors,weights和names并不是唯一的,这意味着可以有相同的值。未来可能会增加一些其他的动物类型。
在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 还是别的什么?
发布于 2013-10-02 11:13:45
对我来说
/api/v1/animals?type=dogs&color=black&weight=12&name=jack
这是最有意义的。通过RESTful API,您可以访问资源,这里的资源是“动物”。其他字段实际上是人类可解释的属性,而不是用于取回单个动物的唯一标识符。
为了使它更简洁,您可能需要考虑为每个动物提供一个单一的标识符来检索资源/api/v1/animals/{id},并将另一个API视为搜索。
发布于 2013-10-03 23:30:27
更新:
URL应该用于指定API要管理的“资源”。
资源是‘动物’(猫/狗/…)并且它们由类型/颜色/重量/名称唯一地标识。
在进入URL设计之前,需要定义“业务”操作;否则,URL是如何设计的就没有意义了。
假设您将需要以下业务操作
如果提供了好处,仍然可以使用(生成) 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’}祝你设计愉快!
https://stackoverflow.com/questions/19129390
复制相似问题