Computer >> Máy Tính >  >> Lập trình >> C#

Các kiểu trả về khác nhau của một hành động bộ điều khiển trong C # ASP.NET WebAPI là gì?

Phương thức hành động API Web có thể có các kiểu trả về sau.

  • Vô hiệu

  • Loại nguyên thủy / Loại phức hợp

  • HttpResponseMessage

  • IHttpActionResult

Vô hiệu -

Không nhất thiết tất cả các phương thức hành động phải trả về một cái gì đó. Nó có thể có kiểu trả về vô hiệu.

Ví dụ

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

Các kiểu trả về khác nhau của một hành động bộ điều khiển trong C # ASP.NET WebAPI là gì?

Phương thức hành động với kiểu trả về void sẽ trả về 204 Không có nội dung phản hồi.

Loại nguyên thủy / Loại phức hợp -

Phương thức hành động có thể trả về kiểu nguyên thủy như int, string hoặc kiểu phức tạp như List, v.v.

Ví dụ

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ác kiểu trả về khác nhau của một hành động bộ điều khiển trong C # ASP.NET WebAPI là gì?

HttpResponseMessage -

Ví dụ

HttpResponseMessage được sử dụng khi chúng ta muốn tùy chỉnh kiểu trả về (kết quả hành động) của một phương thức hành động. Các phản hồi được tùy chỉnh bằng cách cung cấp mã trạng thái, loại nội dung và dữ liệu sẽ được trả lại cho 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ác kiểu trả về khác nhau của một hành động bộ điều khiển trong C # ASP.NET WebAPI là gì?

Trong ví dụ trên, chúng ta có thể thấy rằng Phản hồi được tùy chỉnh. Vì Id được gửi đến phương thức hành động là 0, nên Id khác sẽ được thực thi và 400 yêu cầu Bad được trả về kèm theo thông báo lỗi được cung cấp.

IHttpActionResult -

Ví dụ

Giao diện IHttpActionResult được giới thiệu trong Web API 2. Về cơ bản, nó định nghĩa một nhà máy sản xuất HttpResponseMessage. IHttpActionResult có trong không gian tên System.Web.Http. Những lợi thế của việc sử dụng IHttpActionResult so với HttpResponseMessage như sau.

  • Đơn giản hóa đơn vị kiểm tra bộ điều khiển của bạn.

  • Chuyển logic chung để tạo phản hồi HTTP thành các lớp riêng biệt.

  • Làm cho ý định của hành động bộ điều khiển rõ ràng hơn, bằng cách ẩn các chi tiết cấp thấp của việc xây dựng phản hồi.

Ví dụ

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ác kiểu trả về khác nhau của một hành động bộ điều khiển trong C # ASP.NET WebAPI là gì?