rawfish의 개발공부.log
로그인
rawfish의 개발공부.log
로그인
6. 스프링 MVC - 기본 기능[요청 매핑]
이건회
·
2022년 7월 7일
팔로우
0
Spring
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을 축약해 매핑할 수 있다.
이건회
하마드
팔로우
이전 포스트
6. 스프링 MVC - 기본 기능[프로젝트 생성 및 로깅 기능]
다음 포스트
6. 스프링 MVC - 기본 기능[HTTP 요청]
0개의 댓글
댓글 작성