티스토리 뷰

개발

[Spring Boot] 웹 브라우저 요청과 응답

호호홍얍얍 2022. 5. 25. 10:55

JSON

  • Java Script Object Notation
  • 키와 밸류로 이루어진 데이터 오브젝트를 전달하기 위해 사용하는 개방형 표준 포맷
  • XML과 싸워 이겼다.

 

정적 컨텐츠

  • 웹 브라우저 요청 시, /hello.html 형식으로 넘어오며, 스프링 컨테이너에서 관련된 컨트롤러가 없다는 것을 확인하고 static 폴더의 같은 이름을 가진 파일을 찾아서 보여준다.

 

MVC 템플릿 엔진

@GetMapping("hello-mvc")
      public String helloMvc(@RequestParam("name") String name, Model model) {
          model.addAttribute("name", name);
          return "hello-template";
}
  • /hello-mvc 형식으로 넘어와서, 스프링 컨테이너에서 컨트롤러가 리턴한 이름을 찾아서 있으면 viewResolver가 templates/hello-template.html 파일을 찾아서 보여준다.
  • @RequestParam: 요청 시 1개의 http 요청을 파라미터에 담아주는 어노테이션이다. 예제에서는 String name을 파라미터 값으로 받는다. 사용 시, String name과 같은 변수가 없으면 400에러를 반환한다(required false로 둘 수도 있다).
    • 요청 예) /name?=스프링
    • 파라미터가 많으면 Map 을 활용할 수도 있다.
    • @PathVariable을 사용하여 /name/스프링과 같이 보낼 수도 있다. 단, @PathVariable은 한 개만 보낼 수 있다.
  • 모델 객체를 함께 넘겨주어  템플릿에서 활용할 수 있다.

 

API 방식

@GetMapping("hello-api")
@ResponseBody //http body에 넘겨줌. 그런데, 문자가 아니고 객체로 반환되면 JSON 으로 디폴트로 반환됨(hTTPMESSAGECONVERTER)
public Hello helloApi(@RequestParam("name") String name){
    Hello hello = new Hello();
    hello.setName(name);
    return hello;
}
  • /hello-api 형식으로 넘어와서, 매핑된 컨트롤러가 있는지 확인한다. 컨트롤러에 @ResponseBody 어노테이션이 있으면 viewResolver를 호출하지 않고 HttpMessageConverter가 동작하며, 컨트롤러가 반환한 객체를 변환하여 http body에 반환한다.
  • @ResponseBody: String이 반환되면 StringHttpMessageConverter가 처리하며, 객체가 왔을 때는 MappingJacson2HttpMessageConverter가 기본적으로 작동하여 JSON으로 변환한다. 이외 타입도 다른 컨버터가 등록되어 있어 변환해준다.

 

 

* 인프런 스프링 입문(김영한) 강의 정리

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/05   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함