はじめに
こんにちは、新卒2年目の岡崎です。
エキサイトホールディングス Advent Calendar 2024の20日目を担当します。
他の記事はこちらから!
今回はSpring Bootにおいて、Controllerで全てのリクエストを受け取る方法を紹介します。
環境
- gradle
------------------------------------------------------------ Gradle 8.11.1 ------------------------------------------------------------ Build time: 2024-11-20 16:56:46 UTC Revision: 481cb05a490e0ef9f8620f7873b83bd8a72e7c39 Kotlin: 2.0.20 Groovy: 3.0.22 Ant: Apache Ant(TM) version 1.10.14 compiled on August 16 2023 Launcher JVM: 21.0.5 (Amazon.com Inc. 21.0.5+11-LTS) Daemon JVM: /Users/hiromi.okazaki/.sdkman/candidates/java/21.0.5-amzn (no JDK specified, using current Java home) OS: Mac OS X 14.7.1 aarch64
openjdk version "21.0.5" 2024-10-15 LTS OpenJDK Runtime Environment Corretto-21.0.5.11.1 (build 21.0.5+11-LTS) OpenJDK 64-Bit Server VM Corretto-21.0.5.11.1 (build 21.0.5+11-LTS, mixed mode, sharing)
- Spring Boot
. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.3.0)
実装
Spring Bootで全てのリクエストをControllerで受けとる場合、パスを/**
とすれば実現できます。
@RequestMapping("/**") public String getAllRequest() { return "hello world"; }
@RequestMapping
を使用すると、GETとPOSTの区別をつけず、リクエストを受け取ることができます。
また、GETのみ全てのリクエストを受け取りたい場合は、@GetMapping("/**")
、POSTのみ全てのリクエストを受け取りたい場合は@PostMapping("/**")
とすればそれぞれのリクエストを受け取ることができます。
特定のエンドポイントが存在する場合
特定のエンドポイントが存在する場合は、/**
(ワイルドカード指定)よりも優先されます。
例えば、/sample
というエンドポイントが定義されている場合、リクエストは/**
ではなく /sample
にルーティングされます。
最後に
本日はSpring Bootにおいて、Controllerで全てのリクエストを受け取る方法を紹介しました。どなたかの助けになれば幸いです。