RESTful 웹서비스 생성하기
스프링 mvc에 대해서 전혀 모른다면 아래 주소로 이동하는 것을 추천한다.
스프링 웹은 RESTful 웹서비스를 생성하기 위한 몇 가지 애노테이션을 제공한다.
- @RestController
- 간단하게 말하면 HTTP 요청을 처리하는 컨트롤러 빈으로 설정하는 것이다. 자세한 설명은 spring 명세를 참조하자.
- @Controller 에서 앞에 Rest만 붙어있다. Controller 기능에 무엇인가가 추가가 된 것이다.
- @Controller 에서는 응답을 JSON 형식으로 보내기 위해서는 각각의 메서드에 @ResponseBody 를 붙여야 했는데 @RestController를 사용하게 되면 기본으로 적용이 된다.
- @RequestMapping
- Controller 또는 Controller Method와 HTTP 요청 경로를 연결 해주는 것이라고 생각하면 된다.
- Controller에 설정하게 되면 모든 Method에 적용이 되며 가장 앞의 path이다.
- Controller Method에 설정하게 되면 해당 Method에 적용 된다.
- 즉 Controller의 RequestMapping 값 + Controller Method의 RequestMapping 값 이 최종 경로가 된다.
- 둘 중 하나만 있어도 되지만 최소한 하나는 있어야 한다. (물론 중복되면 안된다.)
- @GetMapping (@PostMapping, @PutMapping, @DeleteMapping)
- @GetMapping 은 기존 @RequestMapping(method=RequestMethod.GET) 과 같다.
- @GetMapping("/index") == @RequestMapping("/index", method = RequestMethod.GET)
- 원하는 요청 방식에 따라 Get, Pot .. 필요한대로 쓰면 된다.
- @RequestParam
- 요청 시 함께 보낸 Parameter의 값을 받을 수 있다.
- 3가지 설정이 존재한다. name, required, defaultValue
- name : 요청 시 Parameter의 key값을 설정할 수 있다. 설정하지 않으면 변수의 이름을 key로 보내야 한다.
- required : 필수 Parameter인지 설정할 수 있다. false 이면 요청 시 꼭 보내지 않아도 된다. 설정하지 않으면 true가 기본 값이다.
- defaultValue : 요청 시 해당 Parameter를 받지 못했을 경우 기본 값으로 사용된다. 설정하지 않으면 required 가 false일 경우 빈값이다.
@GetMapping("/name")
public String name(@RequestParam(name = "eman", defaultValue = "kkt", required = false) String name) {
return name;
}- 기본 자료형을 요청 Parameter로 보낼 때 많이 사용하며, 복잡한 형태의 JSON 데이터의 경우는 아래 설명할 @RequestBody를 사용한다.
- @RequestBody
- spring-boot-starter-web 을 통해 함께 추가 된 잭슨 라이브러리를 통해 JSON 형식의 요청 Parameter를 Object로 바인딩한다.
@PostMapping
public User add(@RequestBody User user) {
user.setName("김경태");
users.add(user);
return user;
}- @PathVariable
- 경로를 반드시 고정값으로 설정해야 하는 것은 아니다.
- @GetMapping("/{id}") 처럼 설정을 하고 Method 파라미터 설정을 (@PathVariable String id) 로 설정을 하면 경로에 입력한 값이 id에 바인딩 된다.
@GetMapping("/{id}")
public String findById(@PathVariable String id) {
return id;
}
위 요청 예제에는 아무런 의미가 없으니 형식만 보면 된다.
'개발 > [MSA] 마스터링 스프링 클라우드-내용 정리' 카테고리의 다른 글
제4장 서비스 디스커버리 (1) (0) | 2019.01.27 |
---|---|
제2장 마이크로서비스를 위한 스프링 (5) - API 문서화 (0) | 2019.01.25 |
제2장 마이크로서비스를 위한 스프링 (3) - 컨피규레이션 파일 사용자 정의하기 (0) | 2019.01.25 |
제2장 마이크로서비스를 위한 스프링 (2) - 스프링 부트를 이용해 애플리케이션 개발하기 (0) | 2019.01.25 |
제2장 마이크로서비스를 위한 스프링 (1) - 마이크로서비스를 위한 스프링 (0) | 2019.01.23 |