我很新,在MVC中設置路由和路由。在我上一份工作中,我們使用了屬性路由來完成WebAPI的工作,所以我非常熟悉(RoutePrefix
,Route
和HttpGet
/HttpPost
屬性等)。而且我可以讓我當前的項目在屬性上正常工作。使用路由前綴混合WebAPI和MVC AttributeRouting?
所以現在我想要做的就是用「api」「前綴」所有webApi路由。所以不要去mysite/test/hello,我想去mysite/api/test/hello。
這是我有什麼,只使用屬性的路由,它工作得很好:
[RoutePrefix("Test")]
public class TestController : ApiController
{ ....
[HttpPost]
[Route("{message}")]
public HttpResponse EchoBack(string message)
{
// return message ... in this case, "hello"
}
}
現在,我知道我可以改變RoutePrefix
到「API /測試」(工作100%),但我不想更改所有的控制器,我寧願能夠通過更改WebApiConfig中傳入的值config.Routes.MapHttpRoute
來執行此操作。
這可能嗎?
您所描述的是基於約定的路由,它不能與同一控制器上的屬性路由很好地混合。控制器符合基於約定的路由或屬性路由。不是都。你可以有不同的控制器或者全部屬性或者所有基於約定的控制器屬性路由通過IMO可以提供更多的靈活性。 https://docs.microsoft.com/en-us/aspnet/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2 – Nkosi
謝謝@Nkosi。所以你說的是,如果我想改變我的基於屬性的控制器以「api」作爲前綴,我應該在每個控制器的RoutePrefix屬性中做,並忽略約定/映射? (今晚我會閱讀MSDN文章,感謝您的發現!!) –
不在每個控制器上。我發現了一篇更好的文章,應該是你正在尋找的東西。http://www.strathweb.com/2015/10/global-route-prefixes-with-attribute-routing-in-asp-net-web-api / – Nkosi