如何处理“无需操作”HTTP响应

时间:2017-08-01 16:43:19

标签: .net angular http

我有一个角度应用程序。当用户登录时,应用程序将用户名/令牌对发送到.NET后端上的API路由。

如果用户名/令牌对不存在,.NET应用程序会将其添加到数据库并返回Created()响应。

但是,如果 对存在(并且可能会存在),则不需要任何操作,也不需要Created()。在这种情况下,我应该回复什么样的反应?

替代解决方案:我可以针对API运行两个请求,一个GET以查看用户/ tokan对是否存在,然后是POST请求(如果不存在),但不是高效,需要嵌套的承诺,通常不那么漂亮。反正可能更好吗?

2 个答案:

答案 0 :(得分:2)

您想要的响应将是您作为API设计者的选择。只要响应不是错误响应,我可能会做一个Ok()响应或NoContent()。

答案 1 :(得分:1)

RESTfull用户会话

按照我之前的回答(现在删除),但我想我会分享如何处理这种情况。

POST => 201创建了

如果您想要始终开始新的用户会话,则应发送POST。如果可以启动新会话,则服务器将生成201 created。如果使用重复令牌存在约束,则取决于您。这意味着,当前端知道它将成为新会话时,前端仅发送POST

PATCH => 204没有内容

如果您有用户/令牌对,并且可以用于标识服务器上的用户会话资源。您只需PATCH即可继续会话。如果补丁成功,服务器可以发送204

如果会话不再有效。服务器应该产生401 unauthorized响应。

GET,EDIT

这些请求产生403 forbidden,因为前端无法修改用户会话。

不要将用户注册和用户登录与用户会话混淆。这些是具有不同URL端点的不同RESTfull资源。