我们已将商品网站归类为我们没有登录的网站,但用户可以查看其他用户列出的商品。要查看其他用户的详细信息,他们必须提供其联系详细信息。要验证用户是否提供了正确的手机号码,我们会将OTP代码发送回该号码。 API流程如下:
1)//当用户填写表单以获取特定股票的卖家详细信息时要点击的API(这需要“stockId”和“mobile”作为输入):
POST /api/lead/
{
"stockId":123,
"mobile":9890384328
}
如果已经验证“移动”,则API的响应(响应代码:200):
{
"sellerName": "xyz",
"sellerMobile": "+123232312",
"sellerAddress": "21, park street, new york"
}
如果尚未验证“mobile”,则回复(响应代码:403):
{
"OTP verification required. OTP is sent to the mobile number."
}
2)用户在移动设备上收到的OTP再次向同一个主要API发回请求:
{
"sellerName": "xyz",
"sellerMobile": "+123232312",
"sellerAddress": "21, park street, new york",
"otp": 1234
}
如果OTP正确,它会回复卖家详细信息。如果提供的OTP不正确,则响应为:
{
"Incorrect OTP."
}
我发现此API设计中几个问题:
有人可以建议哪种方法更好吗?
答案 0 :(得分:7)
简单回答:否。
出于某种原因,它被称为单一责任原则。
在您的公共API中允许多个职责意味着API“端点”必须理解为每个方面“分派”到“正确”实现的不同职责。或者,您允许双重责任API设计通过提供实现的单一内容来损坏您的实现。
除此之外:当你有不同的职责时,OK /错误返回码的范围变得更加复杂。这简直使“一切”变得更难。您可以编写测试 - 也可以为使用API的客户编写测试。
在您的情况下,用户执行: