🍃 Spring/🌱 Spring Boot를 이용한 RESTful Web Service
[Spring Boot를 이용한 RESTful Web Services 개발] 9~10강
락꿈사
2022. 2. 5. 09:04
SpringBoot의 동작 원리
설정 파일의 종류
- application.properties / application.yml
- application.properties -> 설정이름 = 값
- application.yml -> 설정이름 = 값
상세 로그 관련 정보 출력을 위한 application.yml 파일 설정값 추가. (org.springframework 패키지를 사용하는 부분만 로그를 디버그 모드로 출력함)
logging:.
level:
org.springframework: DEBUG
DispatcherServletAutoConfiguration & HttpMessageConverterAutoConfiguration
- DispatcherServlet : 사용자의 요청을 처리해주는 AutoConfiguration 파일.
- HttpMessageConverter : 사용자의 요청을 차리하고 결과값을 반환하는 AutoConfiguration 파일.
DispatcherServlet
- 스프링 부트에서 서블릿 컨테이너에서 http 프로토콜을 통해 들어오는 모든 요청을 처리하기 위해 가장 앞부분에서 중앙집중식의 처리를 하기 위한 프론트 컨트롤러
- 사용자 정보가 DispatcherServlet에 전달됨 -> DispatcherServlet이 이 정보를 Handler Mapping / Controller에 전달함 -> Controller가 처리된 결과값을 Model 형태로 DispatcherServlet에 전달 -> ViewResolver가 사용자에게 보여주고자 하는 포맷으로 페이지 생성 -> 페이지 값에 모델을 포함시켜서 전달
- View를 갖지 않는 REST Data를 반환하는 서비스의 경우, View 형태의 페이지를 생성할 필요없이 사용자의 요청을 Json 포맷으로 전달하면 됨
- REST Controller : 사용자에게 보여주는 View를 갖지 않는 Controller. 전달하고자 하는 값을 ResponseBody에 포함하지 않은 상태에서 바로 반환하면 됨. (View가 있는 경우는 ResponseBody로 변경해서 반환해야 함.)
- 즉, REST Controller는 @Contoller의 역할과 @ResponseBody의 역할을 모두 하는 컨트롤러라고 보면 됨.
API URL 변수 지정
- API URL은 정해진 형태로 사용자로부터 호출되어야 함 (API는 프로그램 간의 약속이기 때문)
- ex) URL : http://localhost:8080/books
- URI는 가변변수를 사용하여 지정할 수 있음
- ex) URI : http://localhost:8080/books/1, URL : http://localhost:8080/books/123
- Path Variable : 동일한 패턴의 가변데이터를 가진 URI를 만들어 이러한 가변 데이터를 클라이언트가 사용할 때, 이 변수를 지칭함.
- @GetMapping(path = "url/{변수이름}")의 형태로 사용함
- 메소드의 매개변수에 @PathVariable 어노테이션을 사용하여 이 변수값이 Path Variable에서 사용하는 변수 값이라는 것을 지정해줌.
@GetMapping(path = "/hello-world-bean/path-variable/{name}")
public HelloWorldBean helloworldBean(@PathVariable String name){
// public HelloWorldBean helloworldBean(@PathVariable(value = "name")){ --> path variable 변수명과 매개변수 변수명이 다를 경우 사용
return new HelloWorldBean(String.format("Hello World , %s", name));
}}