2013-03-19 2 views
0

내 ASP.NET 웹 API 프로젝트에서 XML 또는 JSON 출력 또는 호출자가 원하는 곳에서 표준 수정 API 호출을 사용할 수 있습니다. 하지만 일부 호출은 ATOM 피드를 반환해야합니다.ASP.NET 웹 API로 출력 Atom 피드

지금 나는이 게시물에 사용자 정의 MediaTypeFormatter에 의해 ATOM 또는 RSS 출력을 달성 할 수 있다는 것을 발견 How to generate ATOM and RSS2 feeds with ASP.NET Web API?

을하지만, 그것은으로 같은 출력을 요청하는 호출자까지 여전히으로 내가 원하는 것을 실제로 아니다 HTTP 수락 헤더. 독점적으로 여기에 ATOM, JSON 없음, 아니 (직렬화 된 객체) XML을 반환하고 싶습니다.

웹 API로 가능합니까? 또는 이러한 호출에 표준 웹 컨트롤러를 사용하고 ApiControllers와 같이 다른 모든 API 호출 만 구현하는 것이 더 낫습니까?

도움 주셔서 감사합니다.

답변

7

웹 API로도 가능합니다. 샘플 작업이 이어집니다.

public HttpResponseMessage GetFeed() 
{ 
    return Request.CreateResponse(HttpStatusCode.OK, feedInstance, "application/atom+xml"); 
} 


public HttpResponseMessage GetFeed() 
{ 
    return Request.CreateResponse(HttpStatusCode.OK, feedInstance, feedFormatter, "application/atom+xml"); 
} 

다음 중 하나를 사용할 수 있습니다.

+0

감사! 귀하의 게시물을 upvote 겠지만, 아직 할 수 없습니다 :) –

0

API가 일반적으로 사용자가 요청한 것을 반환해야하므로이 출력 형식을 강제로 사용하려면 별도의 ASP 처리기 페이지 (.ashx)를 추가해야합니다.

+0

감사합니다. @aaroncatlin ...이 경우 API가 피드를 반환해야하므로 ATOM (또는 RSS) XML 응답 외에는 의미가 없으므로이를 제한하려고했습니다. 이러한 호출은 API 호출로 볼 수 있지만 콘텐츠 요청, 회색 영역의 종류로도 볼 수 있습니다. 따라서 API 내부에 들어갈 수 있지만 일반적인 웹 컨트롤러에서는 외부로 가져 오는 것이 좋습니다. 이 호출을 추상화하는 ASHX 처리기를 사용하면 효과가 있지만 실제로 웹 컨트롤러가있는 것처럼 깨끗하지는 않습니다. WebAPI를 통해 직접 출력을 쉽게 제한 할 수없는 경우 해당 경로를 살펴 보겠습니다. –