Open4
今更ながらSpring Frameworkを使ってみる
この方の記事を参考に、IntelliJ Communityにて環境を構築
アノテーションについての色々
@GetMapping(pathname)
pathnameにgreeting
などを入れることによって、ルートを実現する
例:
@GetMapping("/greeting")
public Greeting greeting(@RequestParam(value = "name", defaultValue = "World") String name) {
return new Greeting(counter.incrementAndGet(), String.format(template, name));
}
これによって、/greeting
ないし/greeting?name=User
のようにすればHello, User!
のような結果を得られる。
また、
@GetMapping("/greeting/{name}")
public Greeting greeting(
@PathVariable String name
) {
return new Greeting(counter.incrementAndGet(), String.format(template, name));
}
このようなコードにすることで、/greeting/hoge
のようなよくあるルートを実現できる。
この場合、Hello, hoge!
のような結果が得られる。
@RestController
https://spring.pleiades.io/guides/gs/rest-service/ より、
これは、すべてのメソッドがビューではなくドメインオブジェクトを返すコントローラーとしてクラスをマークします。
らしい。
例によって、例えばこのようなサンプルに、上記したアノテーションを使うことでJSONを返すルートを定義できる:
@RestController
public class GreetingController {
private static final String template = "Hello, %s!";
private final AtomicLong counter = new AtomicLong();
@GetMapping("/greeting/{name}")
public Greeting greeting(
@PathVariable String name
) {
return new Greeting(counter.incrementAndGet(), String.format(template, name));
}
}
Todo用のページを作りたいときに、
@RequestMapping("/api")
public class TodoController {}
とした場合、バージョニングはどうするのが適切なんだろうか?
例えば/api/v1/todo
用のメソッドを定義する場合には
@RequestMapping("/api")
public class TodoController {
@RequestMapping(value = "/v1/todo", method = RequestMethod.GET)
public Todo todo() { /* some code */ }
}
とするのが適切だと思うが、もしこれがv2になった場合、/api/{apiVersion}/todo
みたいな感じで定義したいよねと思う