我正在使用以下技术/方法来实现REST API:

  • JSONAPI
  • JWT token

  • 我想实现身份验证端点,它应该以JSONAPI格式通过POST请求接收用户名和密码,并以JSONAPI格式返回JWT token 。
    但是我看到有些矛盾不允许我100%RESTful:

    我们将其命名为端点/tokens,因为它实际上创建了 token 。响应也将是tokens类型的资源,例如:
    {
      "data": {
        "type": "tokens",
        "attributes": {
          "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjEifQ.ivJ5P23wqVo3w31flg3aOu7er--Ijght_RrBf_MuqsU",
        }
      }
    }
    

    但是请求如何呢? usernamepassword是用户的属性,但应将其发送到/tokens端点。如果我将users资源发送到/tokens端点,则没有太大意义。

    有没有办法解决这个问题,遵循JSONAPI并保持API有意义?

    最佳答案



    为什么不? REST并不强制您仅将用户发送到用户资源。当然,当对用户资源进行CRUD操作时,将通过用户资源终结点执行此操作。

    但是要生成 token ,将用户资源发送到 token 端点是完全合理的。

    10-08 12:11