>  기사  >  백엔드 개발  >  Asp.Net webAPI C#의 콘텐츠 협상이란 무엇입니까?

Asp.Net webAPI C#의 콘텐츠 협상이란 무엇입니까?

王林
王林앞으로
2023-09-11 17:13:01578검색

콘텐츠 협상은 주어진 콘텐츠에 가장 적합한 표현을 선택하는 과정입니다. 여러 표현을 사용할 수 있는 경우 응답합니다. 의미, 의존한다 요청의 헤더 값이 승인되고 서버가 응답을 보냅니다. 첫 번째 HTTP의 콘텐츠 협상 메커니즘은 요청 헤더(

Accept)입니다. 응답에서 허용할 수 있는 미디어 유형(예: "application/json", "application/xml" 또는 사용자 정의 미디어 유형(예: "application/)) vnd.example" +xml"

Accept-Charset - UTF-8 또는 ISO 8859-1과 같이 허용되는 문자 세트

Accept-Encoding - gzip과 같이 허용되는 콘텐츠 인코딩.

Accept-Language - "en-us"와 같은 자연 인코딩 언어를 선호합니다.

서버는 HTTP 요청의 다른 부분도 볼 수 있습니다. 예를 들어, 요청에는 AJAX 요청을 나타내는 X-Requested-With 헤더와 서버가 포함됩니다. Accept 헤더가 없으면 기본값은 JSON일 수 있습니다.

콘텐츠 협상에서 파이프라인은 다음에서 시작됩니다. HttpConfiguration 객체. 또한 다음에서 미디어 포맷터 목록을 가져옵니다. HttpConfiguration.Formatters 컬렉션.

다음으로 파이프라인은 IContentNegotiator.Negotiate를 호출하여 전달합니다. -

  • 직렬화할 개체 유형
  • 미디어 포맷터 컬렉션
  • HTTP 요청

Negotiate 메서드는 두 가지 정보를 반환합니다. -

    어떤 정보가 포맷터 응답의 미디어 유형

포매터를 찾을 수 없으면 Negotiate 메소드는 null을 반환하고 클라이언트는 HTTP 오류 406(허용되지 않음).

다음 StudentController를 고려해 보겠습니다.

using DemoWebApplication.Models;
using System;
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"
         }
      };
   }
}

RESTful 서비스의 기준 중 하나는 클라이언트가 다음을 수행할 수 있어야 한다는 것입니다. XML, JSON 등 원하는 응답 형식을 결정합니다. Accept 헤더가 포함된 서버로 전송됩니다. 클라이언트는 Accept 헤더를 사용하여 다음을 수행할 수 있습니다. 응답 형식을 지정합니다. 예를 들어

Accept: application/xml returns XML
Accept: application/json returns JSON

아래 출력은 Accept 헤더를 XML로 전달할 때 응답이 XML임을 보여줍니다. 애플리케이션/XML.

什么是 Asp.Net webAPI C# 中的内容协商?

아래 출력은 Accept 헤더를 JSON으로 전달할 때 응답이 JSON임을 보여줍니다. 애플리케이션/JSON.

什么是 Asp.Net webAPI C# 中的内容协商?

요청한 형식으로 클라이언트에 응답이 전송될 때 주의하세요 응답의 Content-Type 헤더가 적절한 값으로 설정됩니다. 예를 들어, 클라이언트는 application/xml을 요청하고 서버는 XML 형식으로 데이터를 보냅니다. 또한 Content-Type=application/xml을 설정합니다.

什么是 Asp.Net webAPI C# 中的内容协商?

공로자를 지정할 수도 있습니다. 아래 예에서는 xml의 품질이 더 높습니다. Factor는 json보다 더 중요하므로 서버는 XML 포맷터를 사용하고 데이터를 XML로 포맷합니다. 애플리케이션/xml;q=0.8, 애플리케이션/json;q=0.5

什么是 Asp.Net webAPI C# 中的内容协商?

위 내용은 Asp.Net webAPI C#의 콘텐츠 협상이란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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