Computer >> 컴퓨터 >  >> 프로그램 작성 >> C#

C# ASP.NET WebAPI에서 컨트롤러 작업의 다양한 반환 유형은 무엇입니까?

<시간/>

Web API 액션 메소드는 다음과 같은 반환 유형을 가질 수 있습니다.

  • 무효

  • 원시형/복합형

  • HttpResponseMessage

  • IHttpActionResult

무효 -

모든 작업 메서드가 무언가를 반환해야 할 필요는 없습니다. void 반환 유형을 가질 수 있습니다.

예시

using DemoWebApplication.Models
using System.Web.Http;
namespace DemoWebApplication.Controllers{
   public class DemoController : ApiController{
      public void Get([FromBody] Student student){
         //Some Operation
      }
   }
}

C# ASP.NET WebAPI에서 컨트롤러 작업의 다양한 반환 유형은 무엇입니까?

void 반환 유형의 작업 메서드는 204 No Content를 반환합니다. 응답.

기본 유형/복합 유형 -

액션 메소드는 int, string과 같은 기본 유형 또는 List 등과 같은 복합 유형을 반환할 수 있습니다.

예시

using DemoWebApplication.Models;
using System.Collections.Generic;
using System.Web.Http;
namespace DemoWebApplication.Controllers{
   public class DemoController : ApiController{
      public List<string> Get([FromBody] Student student){
         return new List<string>{
            $"The Id of the Student is {student.Id}",
            $"The Name of the Student is {student.Name}"
         };
      }
   }
}

C# ASP.NET WebAPI에서 컨트롤러 작업의 다양한 반환 유형은 무엇입니까?

HttpResponseMessage -

예시

HttpResponseMessage는 액션 메소드의 리턴 타입(액션 결과)을 커스터마이징 하고자 할 때 사용합니다. 응답은 상태 코드, 콘텐츠 유형 및 HttpResponseMessage에 반환될 데이터를 제공하여 사용자 지정됩니다.

using DemoWebApplication.Models;
using System.Net;
using System.Net.Http;
using System.Web.Http;
namespace DemoWebApplication.Controllers{
   public class DemoController : ApiController{
      public HttpResponseMessage Get([FromBody] Student student){
         if(student.Id > 0){
            return Request.CreateResponse(HttpStatusCode.OK, $"The Sudent Id is
            {student.Id} and Name is {student.Name}");
         } else {
            return Request.CreateResponse(HttpStatusCode.BadRequest, $"InValid
            Student Id");
         }
      }
   }
}

C# ASP.NET WebAPI에서 컨트롤러 작업의 다양한 반환 유형은 무엇입니까?

위의 예에서 Response가 사용자 정의된 것을 볼 수 있습니다. action 메소드로 전달되는 Id는 0이므로 else가 실행되고 400 Bad 요청이 반환되며 오류 메시지가 제공됩니다.

IHttpActionResult -

예시

IHttpActionResult 인터페이스는 Web API 2에서 도입되었습니다. 기본적으로 HttpResponseMessage 팩토리를 정의합니다. IHttpActionResult는 System.Web.Http 네임스페이스에 있습니다. HttpResponseMessage보다 IHttpActionResult를 사용하면 다음과 같은 장점이 있습니다.

  • 컨트롤러의 단위 테스트를 단순화합니다.

  • HTTP 응답을 생성하기 위한 공통 로직을 별도의 클래스로 이동합니다.

  • 응답 구성의 하위 수준 세부 정보를 숨겨 컨트롤러 작업의 의도를 더 명확하게 만듭니다.

예시

using DemoWebApplication.Models;
using System.Collections.Generic;
using System.Web.Http;
namespace DemoWebApplication.Controllers{
   public class DemoController : ApiController{
      public IHttpActionResult Get([FromBody] Student student){
         var result = new List<string>{
            $"The Id of the Student is {student.Id}",
            $"The Name of the Student is {student.Name}"
         };
         return Ok(result);
      }
   }
}

C# ASP.NET WebAPI에서 컨트롤러 작업의 다양한 반환 유형은 무엇입니까?