今回の記事の前提となる知識は、以下の記事で書いているため、興味がある方は以下の記事をご確認ください。
サンプルコード
早速、サンプルコードを以下に記載します。
プロジェクトとして、実際にeclipse
を使用して作成したものをGitHub
で公開しているため、実際に動作確認を行いたい方は、以下からpull
してください。
@RestController
@RequestMapping(Path.CONTROLLER_TEST_2)
public class ControllerTest2 {
/**
* JSON リクエストを取得、レスポンスする
* @param request <SampleJsonRequest> リクエスト
* @return response <SampleJson2Response>
*/
@GetMapping(path = Path.GET_SAMPLE_JSON, consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<SampleJson2Response> getSampleJson(
@RequestBody SampleJsonRequest request) {
// リクエストパラメータ paramA に "key_ok"が設定されていない場合はエラー
if (request != null) {
String paramA = request.getParamA();
if (StringUtils.hasText(paramA) && paramA.equals("key_ok")) {
SampleJson2Response response = new SampleJson2Response();
response.setDataA("ok_data");
return ResponseEntity.ok(response);
}
}
// リクエストに問題がある場合のレスポンス
return this.errorBadRequestResponse();
}
/**
* リクエストに問題がある場合のレスポンス
* @return
*/
private ResponseEntity<SampleJson2Response> errorBadRequestResponse() {
SampleJson2Response response = new SampleJson2Response();
response.setDataA("error data");
return ResponseEntity.badRequest().body(response);
}
}
※今回使用しているPath
は、定数として別ファイルで宣言しているString
です。
@Data
public class SampleJson2Response {
private String dataA;
}
@Data
public class SampleJsonRequest {
public String paramA;
}
※今回、@Data
を使用していますが、@Data
はlombok
を使用して実装できます。
解説
〇リクエスト
サンプルコードでは、class SampleJsonRequest
で定義した内容をリクエストボディのJSON
として受けるようにしています。
リクエストボディには、アノテーションで@RequestBody
を設定する必要があります。
リクエストで受け取るデータをJSON
とする場合は、@GetMapping
のconsumes
にMediaType.APPLICATION_JSON_VALUE
を設定します。
〇レスポンス
class SampleJson2Response
で定義した内容をResponseEntity
のボディとして返します。
一応、ResponseEntity
を使用せずとも実装できるのですが、ResponseEntity
を使用することでレスポンスステータスを定義できるなどの利点があります。
動作確認
動作確認の方法としてはいろいろあるかと思いますが、今回は、postman
を使用して動作確認しています。
実装内容としては、パラメータparamA
にkey_ok
が設定されているなら200
レスポンス、パラメータ未設定なら400
レスポンスを返すようになっています。
成功時
URL:http://localhost:8080/controller_test_2/get_sample_json
リクエストボディ:{ "paramA": "key_ok" }

失敗時
URL:http://localhost:8080/controller_test_2/get_sample_json
リクエストボディ:{ "paramA": null }

終わりに
前回、Spring Boot について書いてから一年以上経ってますね。。。
時間の流れが早い。。。