0

ジャージを使用するRESTサービスがあり、すべてのリクエストで「Content-Type」= "application/json"を送信する必要はありません。

これをデフォルトとしてサービスに設定できますか?

このヘッダーを送信していないため、エラー415 UnsupportedMediaTypeが発生します。

私のサービスは

@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 に答える