이 질문은 this one에 가깝게 약간 비틀었다.웹 API 라우팅 : "api/{컨트롤러}/최신"뿐만 아니라 "API/컨트롤러}/{ID}"를 전달하는 방법
클라이언트가 최신 항목을 가져올 수 있도록 api/items/5
과 api/items/newest
과 같은 요청을 할 수 있도록 웹 API 라우팅 테이블을 설정하고 싶습니다.
나는 some articles을 통해 페이징했는데 올바른 방향인지 여부를 결정하는 데별로 행운이 없었습니다.
내 첫 번째 질문은 발신자가 최신 item
을 찾을 수있게하는 "올바른"또는 "깨끗한"방법은 무엇입니까? api/items/newest
과 같은 일을해도 괜찮습니까?
현재이 내 WebApiConfig.cs 파일에 작동하는 것 같다 :
이config.Routes.MapHttpRoute(
name: "NewestItems",
routeTemplate: "api/items/newest",
defaults: new { controller = "Items" }
);
config.Routes.MapHttpRoute(
name: "ItemsById",
routeTemplate: "api/items/{id}",
defaults: new { controller = "Items" }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
이러한 접근 방식은 작동하지만 컨트롤러 특정 라우팅 규칙을하지 않고이 작업을 수행하는 더 일반적인 방법이 있는지 궁금 해요 . 나는 다음과 같은 접근 방식을 시도했다, 그러나 규칙이 모호하기 때문에 그것은 작동하지 않았다
config.Routes.MapHttpRoute(
name: "ActionWithNoArgument",
routeTemplate: "api/{controller}/{action}",
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
는 라우팅 규칙 별을 컨트롤러에 의존하지 않고이 작업을 수행하는 더 효과적인 방법이 있나요?
고마워요!
+1 것이 일반하게된다. –