REST服务:选择适当的方法

时间:2016-01-03 22:04:24

标签: java web-services rest jax-rs jersey-2.0

在下一个代码的情况下选择合适的Web服务方法的逻辑是什么?

客户端:

HttpAuthenticationFeature feature = HttpAuthenticationFeature.basic("admin", "admin");
final Client client = ClientBuilder.newClient();
client.register(feature);
final Response response = client.target(webServiceURI).request().get();
System.out.println(response.getMediaType());

服务:

@Path("/helloworld")
public class HelloWorld {

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String sayPlainTextHello() {
        return "Hello World RESTful Jersey!";
    }

    @GET
    @Produces(MediaType.TEXT_XML)
    public String sayXMLHello() {
        return "<?xml version=\"1.0\"?>" + "<hello> Hello World RESTful Jersey"
                + "</hello>";
    }

    @GET
    @Produces(MediaType.TEXT_HTML)
    public String sayHtmlHello() {
        return "<html> " + "<title>" + "Hello World RESTful Jersey"
                + "</title>" + "<body><h1>" + "Hello World RESTful Jersey"
                + "</body></h1>" + "</html> ";
    }

}

为什么响应媒体类型为text/html?定义它的规则是什么?如果我需要text/xml作为回应怎么办?

2 个答案:

答案 0 :(得分:3)

我认为请求中的接受标头定义了响应应该采用的格式。有关详细信息,请参阅以下链接:MSDN

我希望答案有所帮助。

答案 1 :(得分:3)

您的容器可能会使用请求中的Accept标头来确定要调用的三种方法中的哪一种。如果请求仅在Accept标头中包含text / plain,它将调用返回text / plain等的文本/ plain。此处的内容协商文档中的更多信息:https://docs.jboss.org/resteasy/docs/2.2.0.GA/userguide/html/JAX-RS_Content_Negotiation.html