作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个场景,用户在表单中输入他的所有详细信息,然后在 Asp.Net Web api 中单击提交(发布请求)。如果用户点击 Post 按钮两次会怎样。我如何处理请求。
请任何人回答这个问题。
最佳答案
我完全不同意@keysl,如果你正在创建一个 API,你可能应该考虑让它成为 RESTFul,其余服务应该是幂等的,take a read of this article也许:
“在 REST API 的上下文中,发出多个相同的请求与发出单个请求具有相同的效果”
更新
POST 的效果是一样的,创建一条新记录!如果存在唯一性约束,那么您应该返回正确的状态代码,例如 400。在我使用的 API 中,我们将返回 400 和一个包含验证/验证失败原因信息的 JSON 对象。
如果 API 是公开的,那么这就是您所能做的所有事情,您不必为人们使用您的 API 访问的内容负责。我在一个拥有超过一千个端点的公共(public) API 上工作,我们不担心用户意外提交数据两次,我们只是验证唯一性。
如果这个问题询问的是支持网站的私有(private)端点,那么我完全同意禁用提交按钮,但您仍应在后端 API 中使用验证,并且前端应处理 400 的返回优雅地。
虽然@keysl 所说的都是有效的东西(除了 DTO 是 POCO,说起来很奇怪)我认为第 1、2 和 4 点与问题完全无关, View 模型无关用户点击按钮两次!
关于.net - 如何在 web api 中处理重复的帖子请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53075474/
我是一名优秀的程序员,十分优秀!