>  기사  >  백엔드 개발  >  Asp.Net WebAPI C#에서 MIME 유형을 어떻게 지정합니까?

Asp.Net WebAPI C#에서 MIME 유형을 어떻게 지정합니까?

WBOY
WBOY앞으로
2023-09-20 20:37:15604검색

MIME 유형이라고도 하는 미디어 유형은 데이터 형식을 식별합니다. HTTP에서 미디어 유형은 메시지 본문의 형식을 설명합니다. 미디어 유형은 유형과 하위 유형이라는 두 개의 문자열로 구성됩니다. 예:

  • text/html
  • image/png
  • application/json
HTTP 메시지에 엔터티 본문이 포함된 경우 Content-Type 헤더는 메시지 본문의 형식을 지정합니다. 이는 수신자에게 메시지 본문의 내용을 구문 분석하는 방법을 알려줍니다.

클라이언트가 요청 메시지를 보낼 때 Accept 헤더를 포함할 수 있습니다. Accept 헤더는 클라이언트가 서버에서 기대하는 미디어 유형을 서버에 알려줍니다.

수락: text/html, application/xhtml+xml, application/xml p>

미디어 유형은 웹 API가 HTTP 메시지 본문을 직렬화 및 역직렬화하는 방법을 결정합니다. Web API에는 XML, JSON, BSON 및 formurlencoded 데이터에 대한 기본 지원이 있으며 미디어 포맷터를 작성하여 다른 미디어 유형을 지원할 수 있습니다.

MediaTypeFormatter는 JsonMediaTypeFormatter 및 XmlMediaTypeFormatter 클래스가 상속받는 추상 클래스입니다. JsonMediaTypeFormatter는 JSON을 처리하고 XmlMediaTypeFormatter는 XML을 처리합니다. 미디어 유형은 WebApiConfig 클래스의 Register 메서드에 지정됩니다. 미디어 유형을 사용할 수 있는 몇 가지 예를 살펴보겠습니다.

Student Controller

Example

using DemoWebApplication.Models;
using DemoWebApplication.Models;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
namespace DemoWebApplication.Controllers{
   public class StudentController : ApiController{
      List <Student> students = new List <Student>{
         new Student{
            Id = 1,
            Name = "Mark"
         },
         new Student{
            Id = 2,
            Name = "John"
         }
      };
      public IEnumerable <Student> Get(){
         return students;
      }
   }
}

ASP.NET Web API 서비스와 상관없이 JSON만 반환하는 예 헤더 값 수락 -

public static class WebApiConfig{
   public static void Register(HttpConfiguration config){
      config.MapHttpAttributeRoutes();
      config.Formatters.Remove(config.Formatters.XmlFormatter);
      config.Routes.MapHttpRoute(
         name: "DefaultApi",
         routeTemplate: "api/{controller}/{id}",
         defaults: new { id = RouteParameter.Optional }
      );
   }
}

위 코드를 사용하여 ASP.NET 웹 API가 클라이언트 요청의 Accept 헤더 값에 관계없이 항상 JSON을 반환하도록 강제하는 XmlFormatter를 제거했습니다. 서비스가 XML 대신 JSON만 지원하도록 하려는 경우 이 기술을 사용하십시오.

我们如何在 Asp.Net WebAPI C# 中指定 MIME 类型?

위 출력에서 ​​웹 API 서비스는 Accept 헤더 값 application/xml에 관계없이 항상 JSON을 반환한다는 것을 알 수 있습니다.

ASP.NET Web API 서비스에서 XML만 반환하는 예 Accept 헤더 값 -

public static class WebApiConfig{
   public static void Register(HttpConfiguration config){
      config.MapHttpAttributeRoutes();
      config.Formatters.Remove(config.Formatters.JsonFormatter);
      config.Routes.MapHttpRoute(
         name: "DefaultApi",
         routeTemplate: "api/{controller}/{id}",
         defaults: new { id = RouteParameter.Optional }
      );
   }
}

我们如何在 Asp.Net WebAPI C# 中指定 MIME 类型?

위 출력에서 ​​Web API 서비스는 Accept 헤더 값 application/json에 관계없이 XML을 반환하는 것을 볼 수 있습니다.

다음 상황에서 ASP.NET Web API 서비스에서 XML 대신 JSON을 반환하는 예 브라우저 요청 -

브라우저가 StudentController에 요청하면 응답은 XML 형식이 됩니다. 이는 브라우저가 기본적으로 승인 헤더를 text/html로 보내기 때문입니다.

我们如何在 Asp.Net WebAPI C# 中指定 MIME 类型?

이제 브라우저에서 요청할 때 XML 대신 JSON 응답을 보내는 방법을 살펴보겠습니다.

public static class WebApiConfig{
   public static void Register(HttpConfiguration config){
      config.MapHttpAttributeRoutes();
      config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new
      MediaTypeHeaderValue("text/html"));
      config.Routes.MapHttpRoute(
         name: "DefaultApi",
         routeTemplate: "api/{controller}/{id}",
         defaults: new { id = RouteParameter.Optional }
      );
   }
}

아래 출력은 요청이 브라우저에서 트리거될 때 수락 헤더 text/html에 관계없이 응답이 JSON 유형임을 보여줍니다.

Asp.Net WebAPI C#에서 MIME 유형을 어떻게 지정합니까?

위 내용은 Asp.Net WebAPI C#에서 MIME 유형을 어떻게 지정합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제