0

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

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

现在我收到错误415 Unsupported Media Type因为我没有发送此标头。

我的服务就像

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

2 回答 2

1

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

不过,您可以使用*/*

@Consumes({MediaType.WILDCARD_TYPE})

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

因此,请为每个请求和响应设置正确的标头。

于 2012-11-08T14:56:20.243 回答
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

于 2012-11-12T20:16:56.693 回答