编程语言
首页 > 编程语言> > 为什么使用Asp.net MVC web.api我应该重定向而不是仅调用其他函数?

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

作者:互联网

我在控制器中有一个放置和发布方法,当它们工作时,它们通常会重定向到get方法.但是我注意到,在MVC中使用重定向过程比仅返回get方法的调用要慢.

来自MS代码的示例:

return RedirectToRoute("someRoute", routeVarWithId);

我发现所需的时间更少:

return Get(Id);

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

我在这里错过任何明显的东西吗?

解决方法:

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.

标签:asp-net-web-api,asp-net-web-api-routing,asp-net-mvc-4,c
来源: https://codeday.me/bug/20191121/2051656.html