Spring/스프링 MVC
[스프링 MVC 1편] 6 - (2) 스프링 MVC 요청 매핑
Poorm 푸름
2023. 11. 23. 20:23
* 스프링 입문 = window, 스프링 MVC 1편 = Mac 으로 진행합니다
* 진도 : 섹션6 - (3)~(4)
* : 자바 클래스명, : 코드, : 단축키
1. 요청 매핑
[ src - main - resources - requestmapping - MappingController ]
1) 로깅 설정하고 HTTP 메서드 속성을 정해보자!
- @RequestMapping 에 method 속성으로 HTTP 메서드를 지정하기
- 종류 : GET, HEAD, POST, PUT, PATCH, DELETE
@RestController
public class MappingController {
private Logger log = LoggerFactory.getLogger(getClass());
@RequestMapping(value = "/hello-basic", method = RequestMethod.GET)
public String helloBasic(){
log.info("helloBasic");
return "ok";
}
@RequestMapping(value = "/mapping-get-v1", method = RequestMethod.GET)
public String mappingGetV1() {
log.info("mappingGetV1");
return "ok";
}
- @RestController
- 반환값(= return)을 @Controller는 뷰로 연결, RestController는 문자로 연결
- HTTP 메시지 바디에 바로 입력 → 따라서 실행 결과로 ok 메세지
- 반환값(= return)을 @Controller는 뷰로 연결, RestController는 문자로 연결
- 로그 선언 private Logger log ~
- 요청 정보 매핑 @RequestMapping
- 요청 정보를 매핑 (해당 URL이 호출되면 이 메서드가 호출)
- 애노테이션을 기반으로 동작하기 때문에, 메서드의 이름은 아무거나 Ok
- 요청 정보를 매핑 (해당 URL이 호출되면 이 메서드가 호출)
- 로그 출력 log.~
2) HTTP 메서드 속성 설정을 깔끔하게 표기
@GetMapping(value = "/mapping-get-v2")
public String mappingGetV2() {
log.info("mapping-get-v2");
return "ok";
}
- 편리한 축약 애노테이션 종류
- @GetMapping
- @PostMapping
- @PutMapping
- @DeleteMapping
- @PatchMapping
3) 경로 자체에 데이터 넣어보기
@GetMapping("/mapping/{userId}")
public String mappingPath(@PathVariable("userId")String data){
log.info("mappingPath userId={}", data);
return "ok";
}
- @PathVariable(경로 변수) 사용
@GetMapping("/mapping/users/{userId}/orders/{orderId}")
public String mappingPath(@PathVariable String userId, @PathVariable Long
orderId) {
log.info("mappingPath userId={}, orderId={}", userId, orderId);
return "ok";
}
- @PathVariable(경로 변수) 다중 사용
한 번에 변수 여러개 넣기 (userId, orderId) -
@PathVariable 의 이름과 파라미터 이름이 같으면 생략 가능
@PathVariable("userId") String userId → @PathVariable String userId
3) 특정 파라미터 조건 매핑
@GetMapping(value = "/mapping-param", params = "mode=debug")
public String mappingParam() {
log.info("mappingParam");
return "ok";
}
- url에 파라미터 정보 넣어야 실행가능
http://localhost:8080/mapping-param?mode=debug
- 종류
- params = "mode"
- params = "!mode"
- params = "mode=debug"
- params = "mode!=debug" (! = )
- params = {"mode=debug","data=good"}
4) 특정 헤더 조건 매핑
@GetMapping(value = "/mapping-header", headers = "mode=debug")
public String mappingHeader() {
log.info("mappingHeader");
return "ok";
}
- Postman에서 http://localhost:8080/mapping-header 검색 후 헤더에 Key = mode, Value = debug 설정해야 실행된다
- 종류
- headers="mode"
- headers="!mode"
- headers="mode=debug"
- headers="mode!=debug" (! = )
5) 미디어 타입 조건 매핑
< Content-Type의 헤더 정보 consume >
@PostMapping(value = "/mapping-consume", consumes = "application/json")
public String mappingConsumes() {
log.info("mappingConsumes");
return "ok";
}
- Postman에서 http://localhost:8080/mapping-consume 검색 후 Body - raw - 타입 설정하면 Header - Content-Type 변경된다
- 종류
- consumes="application/json"
- consumes="!application/json"
- consumes="application/*"
- consumes="*\/*"
- consumes = MediaType.TEXT_PLAIN_VALUE
< Accept의 헤더 정보 produce >
@PostMapping(value = "/mapping-produce", produces = "text/html")
public String mappingProduces() {
log.info("mappingProduces");
return "ok";
}
- Postman에서 http://localhost:8080/mapping-produce 검색 후 Header - Accept에 text/html 넣어주면 실행된다
- 종류
- produces="text/html"
- produces="!text/html"
- produces="text/*"
- produces="*\/*"
- produces = MediaType.TEXT_PLAIN_VALUE
2. 요청 매핑 예시 _ API
[ src - main - resources - requestmapping - MappingClassController ]
- 회원 관리 API 종류
- 회원 목록 조회: GET
- 회원 등록: POST
- 회원 조회: GET
- 회원 수정: 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;
}
}
- @GetMapping / @PostMapping / @PatchMapping / @DeleteMapping
- 각 메서드 타입을 따로 정한다
- 각 메서드 타입을 따로 정한다
- @RequestMapping(경로)
- 공통된 경로 따로 빼주기
- 요청 정보를 매핑 (해당 URL이 호출되면 이 메서드가 호출)
- 공통된 경로 따로 빼주기
- @PathVariable(경로 변수) 사용
@PathVariable 의 이름과 파라미터 이름이 같으면 생략 가능
@PathVariable("userId") String userId → @PathVariable String userId
[출처] 김영한 강사님 인프런 스프링 MVC 1편
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의
웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., 원
www.inflearn.com