2017-11-22 11 views
0

모든 API 호출을 하나의 컨트롤러로 라우팅하려고합니다. MVC를 사용하여 내가 무엇을하고 싶습니다 동적 엔드 포인트를 가지고 그래서 기본적으로 당신이 그것을 사용하는 하나의 컨트롤러를 가리 킵니다 논리 컨트롤러를 가리 킵니다. 더 까다로운 만드는 점은 어떤 컨트롤러가 호출되는지 알고 싶습니다. Get at : "https : // {url}/project/id" "컨트롤러 및"프로젝트 "를 매개 변수 (또는 어떤 종단점을 사용했는지 알려주는)로 사용하여 어떤 컨트롤러가 호출되는지 알 수 있습니다.하나의 컨트롤러에 C# MVC 동적 컨트롤러

저는 이것이 API를 설정하는 좋은 방법은 아니지만 현재 우리의 요구 사항이 우리의 요구 사항에 가장 적합하다고 생각합니다.

[편집] MVC 컨트롤러와 ApiController가 섞여 있기 때문에 ive가 내 질문에 엉망이되었습니다. 나는이 글의 대답을 사용하여 종료 : Route all Web API requests to one controller method

+0

라우팅 프레임 워크가 현재이를 수행하고 있습니다. 왜 사용자 정의 하시겠습니까? 너는 무엇을하려하고 있느냐. 문제가있는 다른 해결책이있을 수 있습니다. – Shyju

+0

[RouteBase' 서브 클래스] (https://stackoverflow.com/a/31958586/)를 사용하면 원하는대로 원하는대로 경로를 프로그래밍 할 수 있습니다. [RouteData.DataTokens] (https://msdn.microsoft.com/en-us/library/system.web.routing.routedata.datatokens (v = vs.110) .aspx)를 사용하여 무엇에 관한 메타 데이터를 전달할 수 있습니다. 경로가 현재 애플리케이션의 나머지 부분과 일치합니다. – NightOwl888

+0

@Shyju 문제는 내가 나머지 API를 제공 할 수 있지만 모든 비즈니스 로직이 데이터베이스에 저장되는 경우에도 데이터베이스에 저장되고 변경할 수 있기 때문에 나머지 API는 동적이어야합니다. 그런 식으로 내가 URL을 잡고 올바른 데이터베이스 호출을 할 수 있습니다. NightOw888은 흥미롭고 역동적 인 것처럼 보이기 때문에 내가 원하는 것을 할 수 있습니다. 감사합니다. – Blaataap

답변

0

이 Asp.Net MVC에서 당신이 할 수있는 경로 등이

routes.MapRoute("NotFound", 
       "{*url}", 
       new { controller = "Error", action = "PageNotFound" }); 

같은 사용자 지정 오류 페이지가 그래서 조금 이름 바꾸기로 보이는

routes.MapRoute("AllRequests", 
       "{*url}", 
       new { controller = "Dynamic", action = "Dynamic" }); 
같은

그게 원하는가요?

+0

일종의 그것은 내가 원하는하지만 그 대신에 같이되고 싶습니다 : routes.MapRoute ("AllRequests", "{* 컨트롤러 *}/{액션}/{ID}", new {controller = " 동적 ", 동작 ="색인 "})); 여기서 {* controller *}는 URL에서 아무 것도 될 수 있지만 항상 같은 컨트롤러를 가리 킵니다. 내 컨트롤러에서 {* controller *}로 사용되는 것을 알고 싶습니다. – Blaataap

+0

그리고 당신은 무엇을 내 제안과 함께 얻지 못했습니까? 그런 다음 HttpContext에 의해 DynamicController에서 요청 (또는 URI)을 얻습니다. – less

+0

작업이 무시되므로 항상 기본 동작 인 i set (이 경우 Index)을 사용합니다. 동작이 정상적으로 작동해야하므로/controller/details/5가 올바른 방법을 트리거해야합니다. – Blaataap