我有一个REST服务,使用泽西,并且不想在每个请求中发送“Content-Type”=“application / json”。
我可以将此设置为我的服务的默认设置吗?
现在我收到错误 415不支持的媒体类型因为我没有发送此标题。
我的服务就像
@Path("/insert")
@POST
@Consumes({MediaType.APPLICATION_JSON})
public Response test(Foo request) {....}
答案 0 :(得分:1)
您无法在服务器上设置客户端的默认值。
尽管如此,您可以使用*/*
:
@Consumes({MediaType.WILDCARD_TYPE})
但是,如果客户端实际发送application/json
而没有设置正确的Content-Type
标头,则服务器将接受该请求,但无法对内容进行反序列化。
所以请为每个请求和响应设置正确的标题。
答案 1 :(得分:0)
部分解决。
我改变了
的签名public Response test(Foo request) {}
到
public Response test(@QueryParam("body") String request) {}
使用
手动反序列化JSONFoo requestObj = new ObjectMapper().readValue(request, Foo.class);
并将POST更改为GET(因为我不关心REST规范)
注意:在我的情况下,这取决于 jackson-mapper-asl-1.9.2.jar 。