我们有一个网站连接买家和卖家的货物。
我们正在设计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根据某些请求体参数发回多种类型的响应?
答案 0 :(得分:0)
这种做法看起来有问题。我个人不会这样做。
建议1:回复正常客户的产品详情,以及产品加卖家详细信息的详细信息,作为回复丰富的形式。有了这两个响应大多是一致的,你仍然有你想要的功能。
编辑:添加了我想到的更多建议。建议2:由于这些响应基本不同,可能应该由不同的资源返回。在这种情况下,请不要在POST期间返回数据,只需使用id来调用ListView
和<ListView Style="{StaticResource BlurredHeaderListViewStyle}">
<ListView.HeaderTemplate>
<DataTemplate>
<sampleapp:CustomHeader />
</DataTemplate>
</ListView.HeaderTemplate>
<ListView.ItemTemplate>
<DataTemplate>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
等会返回响应的内容,如果id对特定资源无效,则调用api/seller/{stockid}
。在缺点的情况下,您需要进行多次调用,这会使架构变得复杂。
建议3:为了避免完全不同的响应对象,这会让人感到困惑并使客户端更难以映射它们,请使用一些包装器对象来提供一些“type”属性和你的对象。类似的东西:
api/product/{stockid}
不完美,但在我看来,两种完全不同的反应要好。