REST Api -API响应在标头中没有一致的默认内容类型

时间:2017-06-28 11:38:33

标签: java web-services rest api

当我使用下面的URL和代码从rest-easy发出请求时。我对每个请求得到不同的响应(调用API而不在请求标头中指定内容类型。多次这样做以查看不同的我正在使用rest-easy(Firefox插件)来调用URL并获得响应

我想默认在“text / plain”中获得响应。还有其他格式,如java / x-java-properties,text / xml 如果我没有在请求标头中指定Accept参数,我想获得text / plain响应。现在我有时会得到text / plain,有时会得到text / x-java-properties或text / xml

部署的版本在我的本地系统中。我能够获得响应y调用以下URL:

网址:http://localhost:8081/restfuljersey/rest/hello

代码:

import javax.ws.rs.GET; 
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
@Path("/hello")
public class Hello {
  @GET
  @Produces("text/plain")
  public String sayPlainTextHello() {
    return "Hello Jersey Plain";
  }
  @GET
  @Produces("text/x-java-properties")
  public String sayHtmlHelloProperties( ) {
          return "Hello Jersey Plain1111";
  }
  // This method is called if XML is request
  @GET
  @Produces("text/xml")
  public String sayXMLHello() {
    return "<?xml version=\"1.0\"?>" + "<hello> Hello Jersey" + "</hello>";
  }
  // This method is called if HTML is request
  @GET
  @Produces("text/html")
  public String sayHtmlHello() {
    return "<html> " + "<title>" + "Hello Jersey" + "</title>"
        + "<body><h1>" + "Hello Jersey HTML" + "</h1></body>" + "</html> ";
  }
}

1 个答案:

答案 0 :(得分:0)

除非您自己指定标题,否则所有浏览器都会在HTTP请求中为Accept标头使用一组默认值。

请参阅https://developer.mozilla.org/en-US/docs/Web/HTTP/Content_negotiation/List_of_default_Accept_values

E.g。 firefox使用Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

在这些值中,您会找到通配符标头*/*,它允许服务器选择它返回的内容类型。浏览器使用它来涵盖所有可能的情况。