首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >构建urls风格的urls

构建urls风格的urls
EN

Stack Overflow用户
提问于 2013-10-02 11:08:02
回答 2查看 189关注 0票数 0

假设我有狗和猫,他们有colorweightname。每种动物都可以一起使用colorweightname来识别,当然,它们的colorsweightsnames并不是唯一的,这意味着可以有相同的值。未来可能会增加一些其他的动物类型。

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

代码语言:javascript
复制
/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  

还是别的什么?

EN

回答 2

Stack Overflow用户

发布于 2013-10-02 11:13:45

对我来说

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

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

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

票数 1
EN

Stack Overflow用户

发布于 2013-10-03 23:30:27

更新:

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

资源是‘动物’(猫/狗/…)并且它们由类型/颜色/重量/名称唯一地标识。

在进入URL设计之前,需要定义“业务”操作;否则,URL是如何设计的就没有意义了。

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

  • A)创建动物
  • B)获取动物
  • 的信息C)获取动物的全部或子集信息
  • D)更新动物

如果提供了好处,仍然可以使用(生成) id;否则,可以将其保留在服务器端,而不向客户端公开。无论哪种方式,它仍然有效..

A)创建一个动物

代码语言:javascript
复制
POST: /api/v1/animals/dogs/black/12/jack/
RETURN: id: <id>

代码语言:javascript
复制
POST: /api/v1/animals/dogs 
BODY: {‘color’ : ‘black’, ‘name’ : ‘jack’, ‘weight’ : 12 } 
RETURN: id: <id> 

B)获取动物的信息

代码语言:javascript
复制
GET: /api/v1/animals/<id>/

代码语言:javascript
复制
GET: /api/v1/animals/dogs/black/12/jack/

C)获取所有动物或动物子集的信息

代码语言:javascript
复制
GET: /api/v1/animals/dogs/

代码语言:javascript
复制
GET: /api/v1/animals/dogs/black/

D)更新一个动物

代码语言:javascript
复制
PUT: /api/v1/animals/<id>
BODY: {‘name’ : ‘jackjunior’}

代码语言:javascript
复制
PUT: /api/v1/animals/dogs/black/12/jack/
BODY: {‘name’ : ‘jackjunior’}

祝你设计愉快!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19129390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档