요청 매핑
MappingController
- 기본 요청
- 둘다 허용 /hello-basic, /hello-basic/
- HTTP 메서드 모두 허용 GET, HEAD, POST, PUT, PATCH, DELETE
- method 특정 HTTP 메서드 요청만 허용
- GET, HEAD, POST, PUT, PATCH, DELETE
- PathVariable 사용
- 변수명이 같으면 생략 가능
- @PathVariable("userId") String userId -> @PathVariable userId
- PathVariable 사용 다중
- 파라미터로 추가 매핑
- params="mode", * params="!mode"
- params="mode=debug" * params="mode!=debug" (! = ) * params = {"mode=debug","data=good"}
- 특정 헤더로 추가 매핑
- headers="mode"
- headers="!mode"
- headers="mode=debug"
- headers="mode!=debug" (! = )
- Content-Type 헤더 기반 추가 매핑 Media Type
- consumes="application/json"
- consumes="!application/json"
- consumes="application/*" * consumes="*\/*"
- MediaType.APPLICATION_JSON_VALUE
- Accept 헤더 기반 Media Type
- produces = "text/html"
- produces = "!text/html"
- produces = "text/*"
- produces = "*\/*"
이렇게 요청을 매핑하는 여러가지 방법이 있다.
요청 매핑 - API 예시
회원 관리를 HTTP API로 만든다 생각하고 매핑을 어떻게 하는지 알아보자.
(실제 데이터가 넘어가는 부분은 생략하고 URL 매핑만)
회원 관리 API
- 회원 목록 조회: GET /users
- 회원 등록: POST /users
- 회원 조회: GET /users/{userId}
- 회원 수정: PATCH /users/{userId}
- 회원 삭제: DELETE /users/{userId}
@RestController
@RequestMapping("/mapping/users")
public class MappingClassController {
@GetMapping
public String user() {
return "get users";
}
@PostMapping
public String addUser() {
return "post user";
}
@GetMapping("/{userId}")
public String findUser(@PathVariable String userId) {
return "get userId = " + userId;
}
@PatchMapping("/{userId}")
public String updateUser(@PathVariable String userId) {
return "update userId = " + userId;
}
@DeleteMapping("/{userId}")
public String deleteUser(@PathVariable String userId) {
return "delete userId = " + userId;
}
}
이후 Postman으로 테스트한다.
매핑 방법을 이해했으니, 이제부터 HTTP 요청이 보내는 데이터들을 스프링 MVC로 어떻게 조회하는지 알아보자.
인프런 김영한님의 스프링 MVC 1편을 듣고 작성한 글입니다.
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의
웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., -
www.inflearn.com
'Spring' 카테고리의 다른 글
스프링 MVC - HTTP 응답 3가지 방법 (0) | 2022.04.13 |
---|---|
스프링 MVC - HTTP 요청 메시지 (0) | 2022.04.11 |
스프링 MVC - 프로젝트 생성과 로깅 (0) | 2022.04.08 |
스프링 MVC - 구조 이해 (0) | 2022.04.07 |
유연한 컨트롤러1 v5, 유연한 컨트롤러2 v5 (0) | 2022.04.05 |
댓글