我们是一个电子商务网站,并希望创建API给我们的所有客户提供一个接口,通过这个API发送产品相关信息。我们目前需要3种类型的产品信息:
Approach1:允许客户端通过单个API发送所有信息。
/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。
/api/product/basicdetails/
/api/product/images/
/api/product/reviews/Approach3:为具有分层URI的所有子资源创建不同的API。
/api/productBasicDetails/
/api/productImages/
/api/productReviews/推荐的restful方法是什么?
发布于 2017-10-29 21:12:23
如果images和reviews都是产品和产品的组成部分,那么如果没有这些存在,我会选择方法1,因为在3中,您定义了许多端点,用户可能会发现它们的使用方式不清楚。
否则,方法2似乎是最好的,也是最清晰的。让您的客户创建包含所有基本细节的产品。响应这个POST请求,应该发送一个201 Created以及包含指向新创建的资源的URL的Location头。然后,要编辑产品本身,直接发送/api/product/{id}/请求。要更新/删除/创建子资源(即image或review),分别向/api/product/{id}/images/或/api/product/{id}/reviews/发送适当的请求。这样,您将拥有清晰的关注点分离,以及易于理解和一致的API。如果添加了任何进一步的资源,您仍然在单个根端点区域中操作,而不是在多个根端点区域中操作(如方法3所示)。
此外,方法1的缺点是,主体可能很难为客户机构造-例如,可选的images -是发送空值还是根本没有键?
https://stackoverflow.com/questions/47003981
复制相似问题