我开始为预订应用设计Rest API。我过去开发过一些Rest API,但这是我第一次单独设计它。我通过JWT使用用户身份验证。
因此,想象一下,我想检索经过身份验证的用户的首选项。什么是最多'休息'选项?
/users/:userId/preferences
并在Authorization
标头中发送JWT,以检查userId是否与经过身份验证的用户相同。
/me/preferences
并且只发送JWT以获取经过身份验证的用户的偏好。
第一个选项似乎最多'休息'一个是因为面向资源的端点,但您需要将userId存储在客户端中,然后使用JWT将其发送到API。看起来有点重复吗?
我已经看到像PayPal这样的大API使用第二个选项,而其他像AirBnB使用第一个选项则使用第二个选项。
哪个选项更好,为什么?我对此非常怀疑......谢谢。
答案 0 :(得分:0)
考虑API需要支持的其他方案。例如,是否只需要显示一些用户信息:
GET /users/:userId/
这可能是具有提升权限的用户的功能,因此JWT
数据将与userId
不同。因此,我选择第一个选项,而不是REST
,它似乎比将自己绑定到/me
端点更具可扩展性。