LoginSignup
0
1

More than 1 year has passed since last update.

【Spring Boot】JSON でのリクエスト、レスポンス

Last updated at Posted at 2023-03-26

今回の記事の前提となる知識は、以下の記事で書いているため、興味がある方は以下の記事をご確認ください。

サンプルコード

早速、サンプルコードを以下に記載します。
プロジェクトとして、実際にeclipseを使用して作成したものをGitHubで公開しているため、実際に動作確認を行いたい方は、以下からpullしてください。

ControllerTest2.java
@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です。

SampleJson2Response.java
@Data
public class SampleJson2Response {
	private String dataA;
}
SampleJsonRequest.java
@Data
public class SampleJsonRequest {
	public String paramA;
}

※今回、@Dataを使用していますが、@Datalombokを使用して実装できます。

解説

〇リクエスト
サンプルコードでは、class SampleJsonRequestで定義した内容をリクエストボディのJSONとして受けるようにしています。
リクエストボディには、アノテーションで@RequestBodyを設定する必要があります。
リクエストで受け取るデータをJSONとする場合は、@GetMappingconsumesMediaType.APPLICATION_JSON_VALUEを設定します。

〇レスポンス
class SampleJson2Responseで定義した内容をResponseEntityのボディとして返します。
一応、ResponseEntityを使用せずとも実装できるのですが、ResponseEntityを使用することでレスポンスステータスを定義できるなどの利点があります。

動作確認

動作確認の方法としてはいろいろあるかと思いますが、今回は、postmanを使用して動作確認しています。
実装内容としては、パラメータparamAkey_okが設定されているなら200レスポンス、パラメータ未設定なら400レスポンスを返すようになっています。

成功時

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

image.png

失敗時

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

image.png

終わりに

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

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1