저는 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 기사를 읽으 리니, 그것을 찾아 주셔서 감사합니다 !!) –
No.모든 컨트롤러에있는 것은 아닙니다. 나는 당신이 찾고있는 것만 큼 좋은 기사를 발견했다. http://www.strathweb.com/2015/10/global-route-prefixes-with-attribute-routing-in-asp-net-web-api / – Nkosi