gpt4 book ai didi

rest - restful POST api可以根据请求正文参数在API响应中发回两个不同的资源吗?

转载 作者:行者123 更新时间:2023-12-04 17:50:38 26 4
gpt4 key购买 nike

我们有一个网站来连接商品的买卖双方。

我们正在设计 POST API 以吸引买家对任何卖家产品的兴趣。 API Uri 和请求正文如下所示:

/api/lead/
{
"name":"xyz",
"mobile": "00984343",
"stockid":4
}

API 是 POST,因为我们会将此信息保存在数据库中。

目前,如果“stockid”是属于我们高级客户的库存,API 会在 API 响应正文中发回卖家详细信息:

{
"sellername":"abc",
"sellermobile":"75654647",
"selleraddress": "faje street, curl"
}

如果“stockid”是属于我们普通客户的库存,API 会在 API 响应正文中发回该产品的完整详细信息(并且不要发回卖家详细信息)

{
"description": "good 2nd hand mobile",
"purchasedate": "24 july,2017",
"purchaseprice": "10000"
}

同一个 POST API 基于股票 ID 发回 2 种不同类型的资源(一种是卖家详细信息,另一种是股票详细信息)。

以这种方式设计 API(即 POST API 基于某些请求正文参数发回多种类型的响应)是否符合要求?

最佳答案

这种做法看起来有问题。我个人不会那样做。

建议 1:普通客户返回产品详细信息,高级客户返回产品详细信息加上卖家详细信息,作为丰富响应的形式。这样,两种响应基本一致,您仍然拥有所需的功能。

编辑:添加了我想到的更多建议。

建议2:既然那些response基本不同,也许应该由不同的资源返回。在这种情况下,不要在 POST 期间返回数据,只需使用 id 调用 api/seller/{stockid}api/product/{stockid}如果 id 对于特定资源无效,它将返回响应或 No content。不利的一面是,您需要进行多次调用,这会使架构复杂化。

建议 3:为避免完全不同的响应对象,这会造成混淆并使客户端更难映射它们,请使用一些提供某些“类型”属性和内部对象的包装器对象。像这样的东西:

{
"type" : "premium",
"data" : {
"sellername":"abc",
"sellermobile":"75654647",
"selleraddress": "faje street, curl"
}
}

不完美,但在我看来比两个完全不同的 react 要好。

关于rest - restful POST api可以根据请求正文参数在API响应中发回两个不同的资源吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45337023/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com