我们有分类商品网站,我们没有登录但用户可以查看其他用户列出的产品。要查看其他用户的详细信息,他们必须提供他们的联系方式。为了验证用户是否提供了正确的手机号码,我们将 OTP 代码发送回该号码。 API 流程如下所示:
发布/api/lead/
{
"stockId": 123,
"mobile": 9890384328
}
如果“移动”已验证,则 API 的响应(响应代码:200):{
"sellerName": "xyz",
"sellerMobile": "+123232312",
"sellerAddress": "21, park street, new york"
}
如果尚未验证“移动”,则响应(响应代码:403):{
"OTP verification required. OTP is sent to the mobile number."
}
请求有效载荷:
{
"stockId": 123,
"mobile": 9890384328,
"otp": 1234
}
如果 OTP 正确,它会发回卖家详细信息作为响应。如果一次性密码提供的不正确,响应是:
{
"Incorrect OTP."
}
我在这个 API 设计中发现了几个问题:有人可以建议哪种方法更好吗?
最佳答案
简单回答:没有 .
它被称为 单责任原则是有原因的。
在您的公共(public) API 中允许多个职责意味着 API“端点”必须了解不同的职责,以“分派(dispatch)”到每个方面的“正确”实现。或者,您允许您的双重职责 API 设计通过让单一事物提供该实现来破坏您的实现。
除此之外:当你有不同的职责时,OK/error 返回码的范围只会变得更加复杂。这只会让“一切”变得更加困难。为您编写测试 - 也为使用您的 API 的客户端。
在您的情况下,用户会:
关于api - REST API : Should single API have multiple responsibilities?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45954230/