6. 스프링 MVC - 기본 기능[요청 매핑]

이건회·2022년 7월 7일
0

springmvc

목록 보기
24/29
  • 요청 매핑은 요청이 왔을 때 어떤 컨트롤러를 호출해야 하는지를 알려주는 것이다.

  • MappingController 클래스를 생성해 준다.
  • @RequestMapping("/hello-basic"): /hello-basic URL 호출이 오면 이 메서드가 실행되도록 매핑한다.

  • 대부분의 속성을 배열"[]" 로 제공하므로 다중 설정이 가능하다. {"/hello-basic", "/hello-go"}
  • @RequestMapping 에 method 속성으로 HTTP 메서드를 지정하지 않으면 HTTP 메서드와 무관하게 호출된다. (모두 허용 GET, HEAD, POST, PUT, PATCH, DELETE

  • 이런 식으로 GET 요청에만 호출되도록 설정할 수 있다. 만약 여기에 POST 요청을 하면 HTTP 405 상태코드를 반환한다

  • 이전에 배웠던 @GetMapping 혹은 @PosttMapping 등등을 사용하면 더 직관적으로 http 메소드를 처리할 수 있다.

  • 만약 "/mapping/userA" 처럼 url 요청에 유니크한 특정 유저 id 정보가 포함된 경우, @GetMapping url 안에 {} 템플릿을 사용해 변수를 넣어놓으면, mappringPath를 사용해 해당 템플릿 안의 정보를 꺼내 변수에 담을 수 있다.


  • 유저 ID가 포함된 url를 보내고 로그를 확인해보면 유저 아이디가 출력된 것을 확인할 수 있다.

  • @PathVariable 의 이름과 파라미터 이름이 같으면 생략할 수 있다.



  • 다음처럼 다중 url을 보내는 경우에도 템플릿을 지정하고 @ParhVariable 을 사용하면 그 값을 꺼낼 수 있다.



  • "params = " 를 설정한 파라미터를 넘기면 반드시 url에 해당 특정 파라미터 값이 ? 뒤에 추가로 들어가야 반환이 된다. 없으면 bad request 에러가 난다.

  • "headers = " 를 통해 특정 헤더 조건을 추가로 매핑할 수 있다.

  • 그냥 /mapping-header 로 요청을 보내면 에러가 나지만


  • 헤더에 해당 정보를 포함시켜 보내면 ok가 뜬다.

  • 미디어 타입 또한 매핑할 수 있다.(json,html 등...)
  • 이 때는 "consume = "을 사용하면 된다.
  • 위 예시에서는 json 형식으로 요청이 들어왔을 때만 요청을 처리한다.

  • json 형식으로 요청을 보내면 ok 가 뜬다
  • 중요한 것은 consumes 은 서버 입장에서 보낸 데이터를 "소비"하는 것이라는 개념이다.

  • url의 accept 헤더에 무엇이 담겨있는지에 따라 매핑할 수 있다.
  • 이 경우 "produce = "를 사용한다.

  • 다음처럼 accept 헤더를 json으로 설정해놓으면, 코드에서는 text/html 파일만 처리하도록 설정했으므로 에러가 난다.

  • text/html 로 accept 헤더를 재설정하면 ok가 뜬다.


  • 스프링에 이미 내장된 MEDIATYP을 사용하면 더 편리하게 타입 정보 설정을 할 수 있다.

  • 이제 요청 매핑을 API로 만들어 보겠다.

  • 다음과 같은 API 설계가 되었다고 가정하자.

  • MappingClassController 클래스를 생성한다.
  • API설계에 맞춘 메소드를 생성하고, http 메소드와 url을 매핑한다.





  • POSTMAN을 통해 API 매핑을 확인한다.

  • 이전에 배운 것처럼 @RequestMapping을 활용해 중복된 URL을 축약해 매핑할 수 있다.
profile
하마드

0개의 댓글