私は以下を達成しようとしています。
Requestからカスタムヘッダーとその値を読み取ります。
name: username
これで、応答時に、同じヘッダーname:value
HTTP応答のペア。
JAX-RS WebサービスのJersey 2.0実装を使用しています。
リクエストURLを送信するときHttp://localhost/test/
、リクエストヘッダーも渡されます(しばらくの間、Firefoxプラグイン-ハードコーディングされます)。
そのURLのリクエストを受信すると、次のメソッドが呼び出されます。
@GET
@Produces(MediaType.APPLICATION_JSON)
public UserClass getValues(@Context HttpHeaders header) {
MultivaluedMap<String, String> headerParams = header.getRequestHeaders();
String userKey = "name";
headerParams.get(userKey);
// ...
return user_object;
}
どうすればこれを達成できますか?どんなポインタも素晴らしいでしょう!
単に@Context HttpServletResponse response
をメソッドの引数として。その上のヘッダーを変更する
@Produces(MediaType.APPLICATION_JSON)
public UserClass getValues(@Context HttpHeaders header, @Context HttpServletResponse response) {
response.setHeader("yourheadername", "yourheadervalue");
...
}
javax.ws.rs.core.Response
はよりエレガントで、ジャージーの一部です。前の答えを拡張するために、簡単な例を示します。
@GET
@Produces({ MediaType.APPLICATION_JSON })
@Path("/values")
public Response getValues(String body) {
//Prepare your entity
Response response = Response.status(200).
entity(yourEntity).
header("yourHeaderName", "yourHeaderValue").build();
return response;
}
Response
をエンティティとしてUserClass
(JAX-RSのクラス)を返します。 Response
では、HTTPヘッダーを設定できます。