目前,我有我的Startup.cs類以下內容:如何在ASP.NET Core 2.0 MVC中爲GET和POST請求添加單獨的默認路由?
app.UseMvc(routes =>
{
routes.MapRoute("default", "api/{controller}/{action=Get}");
});
我所有的MVC控制器有一個方法對他們的獲取,以及其中一些有一個帖子也是如此。事情是這樣的:
public class ExampleController : Controller
{
[HttpGet]
public MyType Get()
{
return GetMyTypeFromSomewhere();
}
[HttpPost("api/[controller]")]
public void Post([FromBody]MyType updated)
{
//do some stuff with the new instance
}
}
目前我需要有("api/[controller]")
對Post方法,使POST請求將達到它。
我希望能夠刪除這個並將POST請求重定向到默認情況下的控制器Post方法。問題是,如果我在當前狀態下這樣做,HTTP POST請求將最終發佈到/api/Example/Get
。
我已經看過MapGet
和MapPost
,但這些我唯一的實現可以發現管道短路,處理和響應內的RequestDelegate傳遞。我的控制器方法永遠不會達到這種方式。
我該如何做到這一點?
編輯
它可能是值得加入,有些控制器具有在api/controller/action
達到,這意味着我需要有地方指定{action}
路線上他們額外的GET和POST方法。但是這樣做意味着我的默認Get和Post方法不再可以通過控制器名稱訪問,因此在MapRoute中添加=Get
作爲默認操作。
我也許應該提到,一些控制器有額外的GET和POST方法上他們,這是無法達成的,除非一種方式訪問 /動作*指定的地方。但是,如果我在MapRoute中指定* action *,則不再僅通過控制器名稱自動訪問Get和Post方法 – benji7425
您嘗試刪除MapRoute並僅使用默認mvc路由嗎? Get和Post方法應該以這種方式訪問。現在有關其他 額外的GET和POST方法,有關mvc如何首先選擇哪種方法的排序邏輯。也許你應該更新你的文章併發布這些額外的方法。 –