2017-11-26 14 views
0

WebAPI를 사용하는 MVC5 사이트에서 작업하고 있습니다. 들어오는 요청에 대한 일부 로깅을 처리하는 도우미 클래스를 정의했으며 요청에 대한 데이터를 로깅해야하는 모든 작업에 대해 호출 할 수 있습니다. (주로 IP 주소, 리퍼러, URL, 사용자 에이전트, 일부 헤더 값). 그리고 난 장애물을 쳤다. ...
컨트롤러 클래스에는 'HttpRequestBase'유형의 속성을 사용한다. ApiController의 Request 속성이 같은 유형이지만 'HttpRequestMessage'인 것으로 가정했습니다.
내 프로젝트에 WebAPI가 필요한지 궁금합니다. WebAPI를 사용하여 사이트 자체에서 사용할 다양한 데이터를 반환하고자했습니다. ApiController 대신 일반 컨트롤러를 사용하지 않는 이유는 무엇입니까? 단일 프로젝트에서 ApiController와 Controller를 사용하면 어떤 이득이 있습니까?WebAPI 컨트롤러가 MVC 컨트롤러에주는 이점은 무엇입니까?


일반 컨트롤러를 사용하는 것보다 WebAPI가 더 좋은 이유에 대해 의견을 말하지 마십시오. WebAPI가 컨트롤러를 사용하는 대신 컨트롤러 옆에 어떤 기술 이점이 있는지 알아야합니다!

+0

MVC를 사용하면 기본적으로 웹 API를 사용할 필요가 없습니다. 웹 API는 MVC 라이브러리 전체가 종속되어 있지 않은 서비스를 대상으로합니다. –

+0

로거 도우미 클래스가 일종의 로그 (HttpRequestBase) 메서드가있는 정적 클래스라고 추측 할 수 있습니까? 로거 메서드를 정확히 호출하는 방법은 무엇입니까? 코드 샘플을 제공해주십시오. –

+2

나는 의견을 기반으로 생각하지 않습니다. 'ApiController'와'Controller' 사이에는 기술적 인 차이가 있습니다. –

답변

4

WebAPI 컨트롤러는 API 용이지만 MVC 컨트롤러는보기를 반환하도록 조정됩니다.

  • 더 명시 적 응답 코드
  • 내용 협상 GET, 게시물에 대한 이름 지정 규칙
  • 넣어 : 모두 두 경우 모두를 처리 할 수 ​​있지만

    , WebAPI 컨트롤러는 쉽게 API의 있도록 몇 가지 기능을 가지고 ,, 삭제 ... 동사

  • ...

컨트롤러의 두 가지 유형의 차이 조금 불행합니다. 결국, 그들은 똑같은 일을합니다.

이것은 ASP.NET 코어에서 WebAPI와 MVC가 병합 된 이유이기도합니다. 당신이 설명하는 ASP.NET 코어에서 불일치를 발견하지 못할 것입니다. 이것이 당신을위한 옵션이라면, 당신은 그렇게 할 수 있습니다.

+1

"둘 다 두 경우 모두 처리 할 수 ​​있지만", 확실합니까? 나는'ApiController'가 헬퍼를 반환하는'View' /'PartialView'를 가지고 있다고 생각하지 않습니다. –

+0

아니요, 아니지만 WebAPI 컨트롤러가 HTML 문자열을 반환하고 content-type을 text/html로 설정할 수있는 이유가 없습니다. 그것은 일을하는 완전히 뒤로 향하는 방법 일 것이지만 여전히 가능합니다. – Kenneth

+0

하지만, ViewBag 또는 ViewData가 없으므로 실제 뷰를 처리 할 수 ​​없습니다. 적어도 약간의 수정없이. –