gpt4 book ai didi

c# - 使用 Asp.net MVC web.api 为什么我应该重定向而不是仅仅调用其他函数?

转载 作者:行者123 更新时间:2023-11-30 16:10:51 24 4
gpt4 key购买 nike

我在 Controller 中有一个 put 和 post 方法,当它们工作时,它们通常会重定向到 get 方法。但是我注意到在 MVC 中使用重定向过程比仅仅返回 get 方法的调用要慢。

MS 代码示例:

return RedirectToRoute("someRoute", routeVarWithId);

我发现花费更少的时间:

return Get(Id);

由于我的 put、post 和 get 都返回 IHttpActonResult,如果调用在我的一个 Controller 内并且安全权限相同,我不明白为什么我应该使用重定向。

我在这里遗漏了什么明显的东西吗?

最佳答案

But I noticed that using the redirect process in MVC is slower than just returning the call of the get method.

当然是;现在有两个请求。

Am I missing anything obvious here?

假设我提交一个表单作为 POST 请求,以从您的网站订购一台新计算机。它没有将重定向返回到我的订单页面,而是将其呈现出来。然后我的猫跳到键盘上并按下 CTRL+R(刷新)。会发生什么?我的浏览器重新提交最后一个请求,即 POST。现在我已经订购了两台电脑!

相反,在成功处理 POST 请求后,您应该返回一个重定向到订单页面,我的浏览器将使用 GET 获取该页面。现在我可以尽情享受,再也不会有任何不好的事情发生。

这也使用户能够将页面添加为书签或通过电子邮件将其发送给我妻子。您不能通过电子邮件发送属于 POST 请求的链接。

有关该主题的一些简单阅读,请参阅 HTTP/1.1 standard ,特别是第 9.5 节及以下内容:

If a resource has been created on the origin server, the response SHOULD be 201 (Created) and contain an entity which describes the status of the request and refers to the new resource, and a Location header (see section 14.30).

因此,当 POST 创建新资源(如订单)时,它应该返回 201 Created 重定向到新资源(即订单)可以访问的 URL被检索。

关于c# - 使用 Asp.net MVC web.api 为什么我应该重定向而不是仅仅调用其他函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25087357/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com