2010-06-03 5 views
0

저는 REST 웹 서비스에서 초보자입니다.REST의 미디어 유형

HTML 또는 XML을 표시하는 REST 프로그램을 작성했습니다. @Path 주석의 값은 @Path("{typeDocument}")입니다.

@GET 
@Produces(MediaType.TEXT_XML) 
public String getXml(@PathParam("typeDocument") String typeDocument) 

는 XML 파일을 표시하기 위해, 및

@GET 
@Produces(MediaType.TEXT_HTML) 
public String getHtml(@PathParam("typeDocument") String typeDocument) 

HTML을 표시하려면 : GET 두 가지 방법이 있습니다.

브라우저 파이어 폭스

항상 getHtml을 실행하고있을() URL 중 하나를

http://localhost:8080/sources/html 또는

http://localhost:8080/sources/xml입니다하지만 IE는 항상 getXml()을 실행하고있을 때.

URL로 정의 된 올바른 방법을 다른 브라우저에서 실행하는 방법은 무엇입니까?

+0

포맷에 대한 약간의주의가 먼 길을 간다 .... – skaffman

답변

1

TEXT_XML 대신 MediaType.APPLICATION_XML을 사용해보세요.

즉, RestEASY 또는 JAXB를 지원하는 다른 구현을 사용하는 경우 JAX-RS를 사용하지 않는 것이 좋습니다.

@GET 
@Produces(MediaType.APPLICATION_XML) 
@Path("/{typeDocument}") 
public MyObject getXml(@PathParam("typeDocument") String typeDocument) { 
myObjectService.get(typeDocument); 
} 


@XmlRootElement(name="myObject") 
public class MyObject { 
// Some properties 
} 

은 유지하기가 훨씬 쉬운 방법입니다. HTML에 JSP를 사용할 수도 있습니다.

좋은 예 (스프링 사용)는 http://java.dzone.com/articles/resteasy-spring을 참조하십시오.

+0

대단히 감사합니다. 나는이 문제를 기각했다. 나는 클래스에서 @Path을 제거하고이 같은 각각의 방법 전에 @Path 추가 : @GET @Produces (MediaType.APPLICATION_XML) @Path ("XML") 공공 문자열은 GetXML() @GET @Produces (MediaType.TEXT_HTML) @Path ("html") public String getHtml() 이제 제대로 실행됩니다. –

+1

도움이 될 것이라니 다행입니다. 문제가 해결되면 다른 사람들이 더 이상 도움을 필요로하지 않는다는 것을 알 수 있도록 대답을 받아 들여야합니다. –

관련 문제