ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|---|
|
@ResponseBody とは
通常の Spring MVC では、@Controller のメソッドは戻り値を「View 名」と解釈し、ViewResolver が JSP / Thymeleaf 等のテンプレートを探します。
@ResponseBody を付けると、この View 解決をスキップし、戻り値をそのままレスポンスボディに書き出します。HttpMessageConverter(Jackson 等)が JSON / XML に変換します。
基本的な使い方
メソッドレベル
@Controller
public class UserController {
@GetMapping("/users/{id}")
@ResponseBody // ← この戻り値だけ JSON で返す
public User getUser(@PathVariable Long id) {
return userService.findById(id);
}
@GetMapping("/users/list")
public String listView() {
return "users/list"; // ← こちらは View 名 (users/list.jsp 等)
}
}
クラスレベル(@RestController)
すべてのメソッドが API レスポンスを返すなら @RestController が便利:
@RestController // = @Controller + @ResponseBody
@RequestMapping("/api/users")
public class UserApiController {
@GetMapping("/{id}")
public User getUser(@PathVariable Long id) { // @ResponseBody 不要
return userService.findById(id);
}
@PostMapping
public User createUser(@RequestBody User user) {
return userService.create(user);
}
}
レスポンス形式(JSON / XML / その他)
戻り値の変換は HttpMessageConverter が担当します。クライアントが Accept ヘッダで何を要求しているかで形式が決まる:
| Accept ヘッダ | 変換 | 必要な依存 |
|---|---|---|
application/json | Jackson / Gson で JSON | Spring Boot に標準同梱(Jackson) |
application/xml | JAXB / Jackson XML で XML | jackson-dataformat-xml 追加 |
text/plain | String そのまま | 標準 |
text/html | String そのまま(HTML として解釈) | 標準 |
レスポンスステータスとヘッダの制御
① @ResponseStatus
@PostMapping("/users")
@ResponseStatus(HttpStatus.CREATED) // 201
public User create(@RequestBody User user) {
return userService.create(user);
}
② ResponseEntity(細かい制御)
@GetMapping("/users/{id}")
public ResponseEntity getUser(@PathVariable Long id) {
Optional user = userService.findByIdOptional(id);
return user
.map(u -> ResponseEntity.ok()
.header("X-Custom-Header", "value")
.body(u))
.orElseGet(() -> ResponseEntity.notFound().build());
}
// 簡潔形
return ResponseEntity.status(HttpStatus.CREATED).body(user);
return ResponseEntity.noContent().build(); // 204
return ResponseEntity.badRequest().body(errorDto); // 400
JSON 出力のカスタマイズ
① Jackson アノテーションで制御
public class User {
private Long id;
@JsonProperty("user_name") // JSON のキー名変更
private String name;
@JsonIgnore // JSON 出力から除外
private String password;
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDate birthDate;
@JsonInclude(JsonInclude.Include.NON_NULL) // null は出力しない
private String email;
}
② application.properties での共通設定
# キーをスネークケースに
spring.jackson.property-naming-strategy=SNAKE_CASE
# null は出力しない
spring.jackson.default-property-inclusion=non_null
# 日付フォーマット
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=Asia/Tokyo
@ResponseBody vs @RestController vs @Controller
| 用途 | 使うもの |
|---|---|
| API のみのクラス | @RestController |
| HTML View のみのクラス | @Controller |
| HTML View + 一部 API(混在) | @Controller + 一部メソッドに @ResponseBody |
よくあるトラブル
Q. JSON でなく文字列がそのまま返る
- 戻り値が String 型: そのまま
text/plainで返る → DTO に変えるか、明示的に JSON 形式で返す - Jackson が classpath にない:
spring-boot-starter-webを依存に追加
Q. レスポンスが空 ({})
- getter がない: Jackson は getter を見るので必須
- Lombok の
@Dataや@Getterで getter 生成
Q. 文字化け(日本語が ???)
# application.properties
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
関連記事
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?