首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rest设计:如何为多个子资源的POSTing资源创建restful?

Rest设计:如何为多个子资源的POSTing资源创建restful?
EN

Stack Overflow用户
提问于 2017-10-29 18:51:43
回答 1查看 960关注 0票数 2

我们是一个电子商务网站,并希望创建API给我们的所有客户提供一个接口,通过这个API发送产品相关信息。我们目前需要3种类型的产品信息:

  • basicDetails:喜欢价格,颜色等。
  • 图片:产品的图像
  • 评论:对该产品的评论

Approach1:允许客户端通过单个API发送所有信息。

代码语言:javascript
复制
/api/product/
{
    "basicDetails" : {}, //json with all basic details of the product.
    "images": {}, //json containing array of images of the product.
    "reviews": {} //json containing array of reviews of the product.
}

Approach2:为所有子资源创建不同的API。

代码语言:javascript
复制
/api/product/basicdetails/
/api/product/images/
/api/product/reviews/

Approach3:为具有分层URI的所有子资源创建不同的API。

代码语言:javascript
复制
/api/productBasicDetails/
/api/productImages/
/api/productReviews/

推荐的restful方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-29 21:12:23

如果imagesreviews都是产品和产品的组成部分,那么如果没有这些存在,我会选择方法1,因为在3中,您定义了许多端点,用户可能会发现它们的使用方式不清楚。

否则,方法2似乎是最好的,也是最清晰的。让您的客户创建包含所有基本细节的产品。响应这个POST请求,应该发送一个201 Created以及包含指向新创建的资源的URL的Location头。然后,要编辑产品本身,直接发送/api/product/{id}/请求。要更新/删除/创建子资源(即imagereview),分别向/api/product/{id}/images//api/product/{id}/reviews/发送适当的请求。这样,您将拥有清晰的关注点分离,以及易于理解和一致的API。如果添加了任何进一步的资源,您仍然在单个根端点区域中操作,而不是在多个根端点区域中操作(如方法3所示)。

此外,方法1的缺点是,主体可能很难为客户机构造-例如,可选的images -是发送空值还是根本没有键?

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

https://stackoverflow.com/questions/47003981

复制
相关文章

相似问题

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