使用JSON的REST无需显式发送头应用程序/ json吗?

时间:2012-11-08 14:52:30

标签: json jersey jax-ws

我有一个REST服务,使用泽西,并且不想在每个请求中发送“Content-Type”=“application / json”。

我可以将此设置为我的服务的默认设置吗?

现在我收到错误 415不支持的媒体类型因为我没有发送此标题。

我的服务就像

@Path("/insert")
@POST
@Consumes({MediaType.APPLICATION_JSON})
public Response test(Foo request) {....}

2 个答案:

答案 0 :(得分:1)

您无法在服务器上设置客户端的默认值。

尽管如此,您可以使用*/*

@Consumes({MediaType.WILDCARD_TYPE})

但是,如果客户端实际发送application/json 而没有设置正确的Content-Type标头,则服务器将接受该请求,但无法对内容进行反序列化。

所以请为每个请求和响应设置正确的标题。

答案 1 :(得分:0)

部分解决。

我改变了

的签名
public Response test(Foo request) {}

public Response test(@QueryParam("body") String request) {}

使用

手动反序列化JSON
Foo requestObj = new ObjectMapper().readValue(request, Foo.class);

并将POST更改为GET(因为我不关心REST规范)

注意:在我的情况下,这取决于 jackson-mapper-asl-1.9.2.jar