質問: "エラー"; response.setStatus(Status.BAD_REQUEST.getStatusCode()); return response; } ``` * POSTリクエストを送信すると上記のexecuteメソッドがJerseyから自動的に呼び出されます。 * JSON形式のリクエスト内容がJerseyによって RequestObj に変換されます。 * ResponseObjはスカラーのメンバ変数を持つ単純なVOですが、上記では試みに、 ResponseObjはHttpServletResponseの実装としてHttpServletResponseを implementし、setStatus()でHTTPステータスをセットしてみたものです。 (実行した結果、正常の200となりました) * 別途、 `return Response.status(Response.Status.BAD_REQUEST.getStatusCode()).build();` を試したところ、想定通り400のHTTPステータスで返りましたが、レスポンスのBODY部 にResponseObjを格納する方法が分かりませんでした。 (HTTPレスポンスのBODY部にはResponseObjの内容のみ格納したいと考えています) 上記のリクエスト受信のHttpServletResponseを取得し、それにsetStatus()することでHTTPステータスが設定できそうだと思いますが、上記のコンテキスト中?でHttpServletResponseを取得して任意のHTTPステータスをセットする方法が分からないため、ご教示頂けますでしょうか。 もしくは、Responseビルダを使って生成するResponseのBODY部に任意のエンティティを格納する方法をご教示頂けますでしょうか。 また行おうとしといる処理内容と実装構成自体に問題があれば、ご指摘いただけますと大変助かります。
回答: `Response` 型(`javax.ws.rs.core.Response` または `jakarta.ws.rs.core.Response`)を返すことで実現できます。 * 3. Resources > 3.3.3. Return Type ``` @Path("API_01") public class MyResource { @POST @Produces(MediaType.APPLICATION_JSON) public Response execute(final RequestObj request) throws Exception { final ResponseObj response = new ResponseObj(); response.status = "999"; response.message = "エラー"; return Response.status(Status.BAD_GATEWAY).entity(response).build(); } } ```