콘텐츠 협상은 주어진 콘텐츠에 가장 적합한 표현을 선택하는 과정입니다. 여러 표현을 사용할 수 있는 경우 응답합니다. 의미, 의존한다 요청의 헤더 값이 승인되고 서버가 응답을 보냅니다. 첫 번째 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를 호출하여 전달합니다. -
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.
아래 출력은 Accept 헤더를 JSON으로 전달할 때 응답이 JSON임을 보여줍니다. 애플리케이션/JSON.
요청한 형식으로 클라이언트에 응답이 전송될 때 주의하세요 응답의 Content-Type 헤더가 적절한 값으로 설정됩니다. 예를 들어, 클라이언트는 application/xml을 요청하고 서버는 XML 형식으로 데이터를 보냅니다. 또한 Content-Type=application/xml을 설정합니다.
공로자를 지정할 수도 있습니다. 아래 예에서는 xml의 품질이 더 높습니다. Factor는 json보다 더 중요하므로 서버는 XML 포맷터를 사용하고 데이터를 XML로 포맷합니다. 애플리케이션/xml;q=0.8, 애플리케이션/json;q=0.5
위 내용은 Asp.Net webAPI C#의 콘텐츠 협상이란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!