관리 메뉴

코딩하는 락커

[Spring Boot를 이용한 RESTful Web Services 개발] 9~10강 본문

🍃 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));
    }}

 

Comments