menu
書いてる野郎
orebike@gmail.com
どのURLをどのメソッドへもっていくかという基本のやつ。
メソッドに対して RequestMapping アノテーションをつけることで URL を指定する
http://localhost:8080/ にアクセスさせて index メソッドを呼び出すにはこのように指定する
@RestController public class HelloController { @RequestMapping("/") public String index() { return "Hello Spring Boot"; } }
http://localhost:8080/hoge で呼び出したい場合はこのようになる
@RestController public class HelloController { @RequestMapping("/hoge") public String index() { return "Hello Spring Boot"; } }
http://localhost:8080/hoge/piyo で呼び出したい場合はこのようになる
@RestController public class HelloController { @RequestMapping("/hoge/piyo") public String index() { return "Hello Spring Boot"; } }
よくありがちなパッケージ階層クラス階層メソッド階層から類推されるのではなく、設定に書いたとおりにルーティングされる。 しかし、これはパッケージ階層とクラス階層とメソッド階層は実際には揃えてファイルを配置したほうがよいだろう。
この RequestMapping アノテーションは class にも指定することができて、 このようにすると http://localhost/hoge/piyo/fuga で index を呼び出すという挙動になる。
@RestController @RequestMapping("/hoge/piyo") public class HelloController { @RequestMapping("/fuga") public String index() { return "Hello Spring Boot"; } }
http://localhost/hoges
http://localhost/hoges/
の差はどうなるのか、仕様としてはどっちも同じ意味にとってほしい
このように指定すると、
@RestController @RequestMapping("/hoges") public class HelloController { @RequestMapping("/") public String index() { } }
↓This URL is OK
http://localhost/hoges/
↓This URL is Not OK
http://localhost/hoges
このように指定すると
@RestController @RequestMapping("/hoges") public class HelloController { @RequestMapping("") public String index() { } }
↓This URL is OK
http://localhost/hoges/
↓This URL is OK
http://localhost/hoges
両方でアクセスできる。なので指定するならスラッシュ無しである。