Spring Boot/Controller/ルーティング/URL

Spring Boot/Controller/ルーティング/URL

どの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

両方でアクセスできる。なので指定するならスラッシュ無しである。

java/spring/spring_boot/controller/routing/url.txt · 最終更新: 2018-12-26 10:25 by ore