여러 get 메서드를 사용하여 별도의 검색 컨트롤러를 만들었으므로 기본 경로를 수정해야했습니다.ASP.NET의 라우팅 문자열 매개 변수
SearchController.cs
[HttpGet]
public IEnumerable<Object> CompanyByOrderId(long id) { ... }
[HttpGet]
public IEnumerable<Object> CompanyByName(string name) { ... }
[HttpGet]
public IEnumerable<Object> UserByName(string name) { ... }
WebApiConfig.cs
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "ActionById",
routeTemplate: "api/Search/{action}/{id}",
defaults: new { controller = "Search", id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "ActionByName",
routeTemplate: "api/Search/{action}/{name}",
defaults: new { controller = "Search", name = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
http://localhost:52498/api/Search/CompanyByOrderId/1
을 참조하면 잘 작동
http://localhost:52498/api/Search/UserByName/john
문자열 매개 변수가있는 URI가 CompanyByName/UserByName 메서드에 매핑되도록 지정하려면 어떻게해야합니까?
감사합니다. 내가 게시 한 것보다 더 많은 게터가 있기 때문에 나는 그들 각각을 개별적으로 등록하고 싶지 않습니다. 누군가가 좀 더 일반적인 해결책을 제시한다면 나는 기뻐할 것입니다. – Explicat