■概要
「@RestController」とは、RESTful Web API を作るためのコントローラクラスを定義するアノテーションであり、「@Controller」と「@ResponseBody」を組み合わせたようなもの。
| アノテーション | 概要 |
|---|---|
| @Controller | Webリクエストを受け取るクラス |
| @ResponseBody | メソッドの戻り値を「HTMLビュー」ではなく「JSON」などのレスポンスボディとして返す |
■実装するサンプルの概要
GETおよびPOSTのリクエストに対して、以下の処理を実装する。
| メソッド | URL(※) | 処理概要 |
|---|---|---|
| GET | /api/users/{id} | Json形式で{id}で指定した擬似User情報を返却する なお、nameは「test{id}」を返却する |
| POST | /api/users | idおよびnameを連携する nameを指定した値を大文字に変更し、擬似User情報を返却する |
実行環境
実行環境は以下の通り
- Java:バージョン21
- Spring Boot:バージョン3.5.6
■サンプルコード
・UserController.java
package com.practice.annotation.anotools_spring.controller;
import org.springframework.boot.autoconfigure.security.SecurityProperties.User;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
// Webリクエストを受け取るクラス
@RestController
// メソッドの戻り値を「HTMLビュー」ではなく「JSON」などのレスポンスボディとして返す
@RequestMapping("/api")
public class UserController {
@PostMapping("/users")
public User createUser(@RequestBody User user) {
// 受け取ったUserを加工して返す例
user.setName(user.getName().toUpperCase());
return user; // 自動的にJSONで返却される
}
@GetMapping("/users/{id}")
public User getUser(@PathVariable Long id) {
User user = new User();
user.setName("test" + id);
return user;
}
}■実行結果
▼GET:/api/users/{id}
request:http://localhost:8080/api/users/90
response:
{
"name": "test90",
"password": "571fc2d4-4141-4fe2-a92a-f9f4c09286ac",
"roles": [],
"passwordGenerated": true
}▼POST:/api/users/
request:http://localhost:8080/api/users
{
"id": 11,
"name": "taro"
}response:
{
"name": "TARO",
"password": "d70f61cd-bdc0-4cb4-ba47-c236efcdae0d",
"roles": [],
"passwordGenerated": true
}

コメント