我正在使用以下技术/方法实现REST API:
我想实现身份验证端点,它应该在JSONAPI格式的POST请求中接收用户名和密码,并以JSONAPI格式返回JWT令牌。 但我发现有些矛盾不允许我100%RESTful:
设置名称端点/tokens
,因为它实际上创建了令牌。响应也是tokens
类型的资源,例如:
{
"data": {
"type": "tokens",
"attributes": {
"value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjEifQ.ivJ5P23wqVo3w31flg3aOu7er--Ijght_RrBf_MuqsU",
}
}
}
但请求怎么样? username
和password
是用户的属性,但应将其发送到/tokens
端点。如果我将users
资源发送到/tokens
端点,则没有多大意义。
有没有解决方法,遵循JSONAPI并保持API有意义?
答案 0 :(得分:5)
如果我将用户资源发送到/ tokens端点,则没有多大意义。
为什么不呢? REST并不强制您只将用户发送到用户资源。当然,当您对用户资源进行CRUD操作时,您将通过用户资源端点执行此操作。
但是要生成令牌,将用户资源发送到令牌端点是完全合理的。
答案 1 :(得分:2)
您还可以通过HTTP Authorization标头提供用户凭据,或者作为JSON有效负载的顶级-bash: nvm: command not found
属性的一部分提供。