我有一个使用球衣的 REST 服务,并且不想在每个请求中都发送“Content-Type”=“application/json”。
我可以将此设置为我的服务的默认设置吗?
现在我收到错误415 Unsupported Media Type因为我没有发送此标头。
我的服务就像
@Path("/insert")
@POST
@Consumes({MediaType.APPLICATION_JSON})
public Response test(Foo request) {....}
您不能在服务器上设置客户端的默认值。
不过,您可以使用*/*
:
@Consumes({MediaType.WILDCARD_TYPE})
但是,如果客户端在application/json
没有设置正确的Content-Type
标头的情况下实际发送,服务器将接受请求但无法反序列化内容。
因此,请为每个请求和响应设置正确的标头。
部分解决。
我改变了签名
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。