2012-09-28 7 views
8

웹 API가 처음이므로 클라이언트 용 서버를 만들어야합니다. 나는 클라이언트를 통제 할 수 없다. 어떤 것을 바꿀 수는 없다.대체 콘텐츠 유형이있는 C# web api 사용

클라이언트가 POST 본문에서 html로 캡슐화 된 json 요청을 전송합니다. 그러나 내용 유형이 다를 수 있습니다. ApiController가 다른 콘텐츠 유형을 처리 할 수있게하려면 어떻게해야합니까?

답변

8

웹 API는 콘텐츠 협상 HTTP 요청의 헤더 Content-Type을 기반으로 올바른 포맷터를 자동으로 선택하는 메커니즘을 지원합니다.

기본적으로 콘텐츠 협상에서는 json, xmlform-urlencoded data의 세 가지 형식 지정자를 지원합니다. 포맷터가 없으면 클라이언트는 HTTP 오류 406 (Not Acceptable)을 수신합니다.

은 자세한 내용보기 :

https://docs.microsoft.com/en-us/aspnet/web-api/overview/formats-and-model-binding/content-negotiation

당신이 웹 API 지원 다른 Content-Type을 허용해야하는 경우 사용자 정의 포맷터를 작성할 수 있습니다

https://docs.microsoft.com/en-us/aspnet/web-api/overview/formats-and-model-binding/media-formatters

+1

감사합니다. 공공 HttpResponseMessage 포스트 (HttpRequestMessage R) { } 이것은 제가 다음 구문 분석 할 수있는 들어오는 원시 XML에 접근하도록 허용 :이를 사용하여 끝났다. 나는 그것이 "옳은"방법이 아니라고 확신합니다. 그러나 그것은 저에게 효과적입니다. – user789235