我正在为应用设置API。首次打开该应用程序时,用户可以登录或注册。
对于登录,我想到了设置一个端点/tokens
,其中请求包含email
和password
,响应包含access_token
,refresh_token
,expires_in
和token_type
(目前始终为Bearer)。通过仅传递refresh_token
来获取新的access_token
,然后返回相同的属性({{1}除外),可以使用同一端点。看起来还可以,但是吗?
对于注册,事情还不太清楚。我已经建立了一个端点refresh_token
,其中请求包含注册所需的所有详细信息。最初,我返回了/users
,然后客户端不得不向204
发出第二个请求,但是后来我意识到,如果第二个请求失败,则由于创建了用户但登录后,事情可能会卡住没发生然后,我想让后端也生成令牌并以/tokens
和与对201
的请求相同的有效负载进行响应。但是,由于调用/tokens
,返回的资源不是用户,因此感觉不太RESTful。然后,我想也许可以创建令牌并使用/users
和204
标头进行响应,但是问题在很大程度上与第一种情况相似(用户可能会卡住,在这种情况下,如果{{1 }}到该位置失败)。最终,如果我没有在一个事务中执行所有操作(创建用户和令牌),并对此做出响应,我将看不到任何避免“卡住”问题的方法。最好的方法是什么?