【Java】Spring:「@RestController」の基本的な使い方

■概要

「@RestController」とは、RESTful Web API を作るためのコントローラクラスを定義するアノテーションであり、「@Controller」と「@ResponseBody」を組み合わせたようなもの。

アノテーション概要
@ControllerWebリクエストを受け取るクラス
@ResponseBodyメソッドの戻り値を「HTMLビュー」ではなく「JSON」などのレスポンスボディとして返す

■実装するサンプルの概要

GETおよびPOSTのリクエストに対して、以下の処理を実装する。

メソッドURL(※)処理概要
GET/api/users/{id}Json形式で{id}で指定した擬似User情報を返却する
なお、nameは「test{id}」を返却する
POST/api/usersidおよびnameを連携する
nameを指定した値を大文字に変更し、擬似User情報を返却する
URLのドメインは「http://localhost:8080」

実行環境

実行環境は以下の通り

  • 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
}

コメント