使用JWT的Rest API中经过身份验证的用户的独占端点

时间:2017-08-01 11:00:55

标签: rest api jwt api-design restful-url

我开始为预订应用设计Rest API。我过去开发过一些Rest API,但这是我第一次单独设计它。我通过JWT使用用户身份验证。

因此,想象一下,我想检索经过身份验证的用户的首选项。什么是最多'休息'选项?

  1. /users/:userId/preferences并在Authorization标头中发送JWT,以检查userId是否与经过身份验证的用户相同。

  2. /me/preferences并且只发送JWT以获取经过身份验证的用户的偏好。

  3. 第一个选项似乎最多'休息'一个是因为面向资源的端点,但您需要将userId存储在客户端中,然后使用JWT将其发送到API。看起来有点重复吗?

    我已经看到像PayPal这样的大API使用第二个选项,而其他像AirBnB使用第一个选项则使用第二个选项。

    哪个选项更好,为什么?我对此非常怀疑......谢谢。

1 个答案:

答案 0 :(得分:0)

考虑API需要支持的其他方案。例如,是否只需要显示一些用户信息:

GET /users/:userId/

这可能是具有提升权限的用户的功能,因此JWT数据将与userId不同。因此,我选择第一个选项,而不是REST,它似乎比将自己绑定到/me端点更具可扩展性。