【发布时间】:2021-10-12 05:54:22
【问题描述】:
我正在创建一个实现 JSON:API 规范的 JSON API。然而我有一个问题,这个问题更普遍地适用于 RESTful 设计:处理资源“创建”的推荐方法是什么,其中一个属性是由服务器“计算”的?
在我的示例中,我有一个POST /auth/tokens 端点,它接受用户的凭据并返回一个JWT。我使用了 POST 端点,因为在我看来,我们正在创建一个令牌资源,即使该令牌没有保存到数据库中。但是,根据 JSON:API,正确的请求/响应应该是什么样的?这个?:
POST /auth/tokens
{
"data": {
"type": "tokens",
"attributes": {
"email": "...",
"password": "..."
}
}
}
但是,使用电子邮件和密码创建令牌是否有意义?似乎它会为电子邮件/密码创建一个令牌。有区别吗?
更重要的是,响应会是什么样子?它看起来像这样:
{
"data": {
"type": "tokens",
"attributes": {
"token": "..."
}
}
}
但规范规定:
每个资源对象都必须包含一个 id 成员和一个 type 成员。 id 和 type 成员的值必须是字符串。
由于令牌没有保存到数据库中,我真的没有它们的 ID。我该怎么办?
【问题讨论】: