programing

WebAPI 또는 MVC를 사용하여 ASP에서 JSON을 반환한다.그물

oldcodes 2023. 3. 5. 10:24
반응형

WebAPI 또는 MVC를 사용하여 ASP에서 JSON을 반환한다.그물

ASP를 만들고 있어요.클라이언트 스크립트 부하가 높은 NET MVC 애플리케이션은 JSON 및 jQuery를 사용하여 DOM을 조작합니다.

Web API 컨트롤러MVC 컨트롤러 모두 JSON을 반환할 수 있는 것으로 알고 있습니다.

시나리오에서는 Web API 컨트롤러MVC 컨트롤러 중 어느 쪽을 사용해야 합니까?

Web API 컨트롤러는 임의의 ASP에서 작성 및 호스트할 수 있습니다.MVC 어플리케이션뿐만 아니라 NET 어플리케이션.따라서 웹 API를 작성하는 명백한 이유는 MVC 프런트엔드가 없는 경우(예: 회사/조직이 호스팅하는 클래식 RESTful 웹 서비스)입니다.

MVC 컨트롤러는 일반적으로 MVC 프레임워크에 의존합니다.기본 템플릿과 커뮤니티 및 피어에서 수행한 작업의 대부분을 살펴보면 거의 모든 MVC 컨트롤러가 View를 염두에 두고 구현되어 있음을 알 수 있습니다.

개인적으로 저는 View()로 응답할 때 MVC Controller를 사용합니다.특정 뷰에 의존하지 않는 것은 Web API를 사용합니다.

물론 경고는 있지만 일반적으로 MVC의 모델 바인딩 동작이 필요하지 않고 서비스가 데이터 중심이며 운영이 데이터 중심(예: CRUD 작업)이라면 '모델 뷰 컨트롤러' 대신 '웹 API 컨트롤러'가 필요할 수 있습니다.반대로 조작이 View 중심(예를 들어 사용자 관리 페이지 제공)이거나 MVC의 모델 바인딩에서 'ajax partials(ajax 부분)'를 생성해야 하는 경우에는 MVC 컨트롤러가 필요합니다.

개인적으로 JSON 기반의 RESTful 클라이언트를 구동하기 위해 Web API 컨트롤러를 사용하고, 기본적인 브라우저 라우팅 및 SPA 전달을 처리하기 위해 MVC 컨트롤러를 사용합니다.

WebAPI는 API를 만들기 위한 것입니다.XML, JSON 등의 API를 누군가가 사용할 수 있도록 하고 싶은 경우.웹 API를 만들 수 있습니다.

당신의 경우 JSON의 클라이언트와만 대화하면 됩니다.

웹 사이트가 대부분 클라이언트 스크립트 기반이지만 여전히 ASP를 사용할 수 있습니다.NET MVC 컨트롤러 맞죠?또, 이미 엔티티에 근거해 컨트롤러를 논리적으로 분할하고 있을 가능성이 있기 때문에, Web API 전용의 다른 클래스를 작성하는 대신에, 이러한 json 서비스 메서드를 추가하는 것이 타당합니다.

따라서 고객님의 특수한 상황(제 말이 맞다면)에 대해서는 컨트롤러에 따르겠습니다.

그 해답은, 문제의 분리, 서비스의 작성, 구성보다 인습에 의존하는 것으로 요약됩니다.

컨트롤러는 뷰와 모델 사이에서 코디네이터 역할을 하지만 API는 데이터에 대한 작업을 주로 수행합니다.API 규약의 경우 CRUD 연산을 매우 쉽게 수행할 수 있습니다.다음으로 CRUD 동작과 HTTP 액션의 매핑을 나타냅니다.

  • GET : 읽기
  • POST: 작성
  • PUT: 갱신
  • DELETE: 삭제

따라서 API를 사용하면 별도의 액션을 생성하여 HTTP 액션으로 속성을 지정할 필요가 없습니다.

API Controller에 대한 유일한 우려는 영역 기반이 아닌 사이트 기반이라는 것입니다.한 사이트에는 컨트롤러 메서드의 이름을 붙일 수 있는 보조 컨트롤러 서브폴더는 1개뿐입니다.다른 영역에서 컨트롤러 이름을 복제해야 할 경우가 있습니다.

domain.com/api/area1/controller1/

domain.com/api/area2/controller1/

이것을 가능하게 하는 커스텀 코드 설정이 몇 가지 있습니다만, 디폴트로는 동작하지 않습니다.

Shaun Wilson의 답변(위쪽 답변)에는 동의하지만, 왜 그런지 잘 모르겠습니다.왜인지 조금 혼란스러워서 아직 다음(아마도 잘못된) 예감으로 이해하려고 하고 있기 때문입니다.

  • 클라이언트가 보기 조작을 처리할 수 있도록 WebAPI 컨트롤러를 사용하여 클라이언트에 JSON 데이터를 전달합니다.이 프로세스에서는 뷰가 필요 없으며 클라이언트가 클라이언트 측 조작을 처리할 수 있도록 메서드(javascript 요청 등)에 대한 응답만 필요합니다.
  • 데이터를 사용하여 page_load 중 또는 직후에 뷰를 조작할 필요가 있는 경우(SPA 앱이 아닌 경우) MVC 컨트롤러를 사용합니다.

Shaun의 답변의 마지막 줄에 "기본 브라우저 라우팅 및 SPA 전달을 처리하기 위해 MVC 컨트롤러를 사용합니다."라고 쓰여있기 때문에 여기서 내가 어떻게 틀렸는지 알 수 없습니다.JSON 폼에서 응답을 받는 JavaScript 메서드일 수 있다고 가정했을 때, 아마도 나는 MVC 컨트롤러가 무엇인지 완전히 알지 못할 것입니다.이것은 Stackoverflow에서 가장 가까운 투고이며, 제 질문에 대한 답변으로 원격으로 관련되어 있기 때문에 질문을 중복하는 대신 이 투고에 응답합니다.

이 시나리오에서는 WebApi가 Javascript 요구에 근거해 이러한 데이터를 전송하는데 매우 적합하기 때문에 추천합니다.저는 보통 WebApi 컨트롤러를 개발하여 JSON 친화적인 오브젝트를 반환하고 Javascript로 쉽게 해석할 수 있도록 합니다.

MVC 컨트롤러에서 이런 종류의 액션을 사용하고 싶은 유일한 실시간은 HTML을 생성하고 페이지 세그먼트를 Javascript 호출로 바꾸려는 경우입니다.

예를 들어 다음과 같습니다.

JQuery UI Datepicker를 사용하면 선택한 요일의 이벤트를 나타내는 옵션버튼 목록이 생성됩니다.

이 시나리오에서는 WebApi를 사용하여 JSON을 반환하고 Javascript를 사용하여 필요한 HTML을 생성할 수 있지만, 일반적으로 Javascript를 사용하여 HTML을 많이 작성하는 것은 좋지 않습니다.C#에서 HTML을 빌드한 후 부분 뷰를 통해 반환하는 것이 좋습니다.이렇게 하면 Javascript 해석에 오류가 발생할 가능성이 낮아집니다.HTML을 훨씬 쓰기 쉽게 만드는 것은 말할 것도 없습니다.

언급URL : https://stackoverflow.com/questions/10346342/using-webapi-or-mvc-to-return-json-in-asp-net

반응형