假设一个班级:
public class MyResource {
@Path("/thing")
public String getThing() {
// returns HTML
}
@Path("/thing")
@Produces(MediaType.APPLICATION_JSON)
public String getThingJSON() {
// returns JSON
}
}
Accept: */*
如何处理标题为getThing()
的请求?目前,拥有通配符接受标头会导致getThingJSON()
被调用。如果我有Accept: text/html
的接受标头,则会调用getThing()
。
答案 0 :(得分:2)
我遇到了同样的问题,我需要使用特定@Produces()
注释的方法。这个技巧有效:
@Path("/thing")
public String getThing() {}
@Path("/thing")
@Produces({MediaType.APPLICATION_JSON, "*/*;q=0"})
public String getThingJSON() {}
使用MIME类型时,可以添加q属性,表示优先级(0到1)。没有q属性意味着1,但显然q = 0欺骗泽西岛使用其他功能。
这是一种黑客行为,所以我不知道它是否会继续有效,但帮助了我。
答案 1 :(得分:-1)
尝试添加a @Produces({MediaType.WILDCARD})
到getThing()