집 >백엔드 개발 >C#.Net 튜토리얼 >Asp.Net WebAPI C#에서 MIME 유형을 어떻게 지정합니까?
MIME 유형이라고도 하는 미디어 유형은 데이터 형식을 식별합니다. HTTP에서 미디어 유형은 메시지 본문의 형식을 설명합니다. 미디어 유형은 유형과 하위 유형이라는 두 개의 문자열로 구성됩니다. 예:
클라이언트가 요청 메시지를 보낼 때 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 메서드에 지정됩니다. 미디어 유형을 사용할 수 있는 몇 가지 예를 살펴보겠습니다.
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만 지원하도록 하려는 경우 이 기술을 사용하십시오.
위 출력에서 웹 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 } ); } }
위 출력에서 Web API 서비스는 Accept 헤더 값 application/json에 관계없이 XML을 반환하는 것을 볼 수 있습니다.
다음 상황에서 ASP.NET Web API 서비스에서 XML 대신 JSON을 반환하는 예 브라우저 요청 -
브라우저가 StudentController에 요청하면 응답은 XML 형식이 됩니다. 이는 브라우저가 기본적으로 승인 헤더를 text/html로 보내기 때문입니다.
이제 브라우저에서 요청할 때 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 유형을 어떻게 지정합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!