반응형
이제 간단한 요청 매핑 예제를 만들어서 PostMan으로 테스트할 것이다.
MappingController를 만들고 테스트용으로 가장 간단한 메소드를 만들었다.
@RestController
public class MappingController {
private Logger log = LoggerFactory.getLogger(getClass());
@RequestMapping("/hello-basic")
public String helloBasic() {
log.info("helloBasic");
return "ok";
}
}
- @RestController
- @Controller는 반환 값이 String이면 View 이름으로 인식
- @RestController는 반환 값을 HTTP 메시지 바디에 바로 입력
- 실행 결과로 "ok" 메시지를 받을 수 있게 됨
- @RequestMapping("/hello-basic")
- /hello-basic URL 호출이 오면 해당 메소드 실행되도록 매핑
- 다중 설정 가능 (ex: {"hello-basic", "/hello-go"}
- HTTP 메소드를 지정하지 않았으므로 GET, HEAD, POST, PUT 등 모든 메소드에 실행 가능
특정 HTTP 메소드 요청만 허용하기
@GetMapping(value = "/mapping-get-v2")
public String mappingGetV2() {
log.info("mapping-get-v2");
return "ok";
}
- @GetMapping, @PostMapping, @PutMapping, @DeleteMapping, @PatchMapping 등 어노테이션 지원
- @RequestMapping (value = "~", method = RequestMethod.GET)으로 대체 가능
PathVariable 경로 변수 사용하기
@GetMapping(value = "/mapping/{userid}")
public String mappingPath(@PathVariable("userid") String data) {
log.info("mappingPath userId={}", data);
return "ok";
}
- 리소스 경로에 식별자를 넣음
- @RequestMapping은 URL 경로를 템플릿화
- @PathVariable을 사용하면 템플릿화 한 것에서 매칭되는 부분을 편리하게 조회 가능
- @PathVariable의 이름과 파라미터 이름이 같으면 @PathVariable userid 식으로 축약 가능
PathVariable 더 알아보기 ▼
더보기
@PathVariable 앞에 @가 붙은 것을 보면 알 수 있듯이 어노테이션의 일종이다.
{ } 안에 넣어지는 URI의 템플릿 부분을 추출한다.
위와 같은 경우에는 localhost:8080/mapping/yeonLog 링크로 접근할 경우, userid가 "yeonLog"로 인식된다.
@PathVariable 코드
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface PathVariable {
@AliasFor("name")
String value() default "";
@AliasFor("value")
String name() default "";
boolean required() default true;
}
다중 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";
}
매핑 시 특정 파라미터를 조건으로 넣기
@GetMapping(value = "/mapping-param", params = "mode=debug")
public String mappingParam() {
log.info("mappingParam");
return "ok";
}
- params에 조건을 넣어 해당 파람이 존재해야만 메소드가 실행되도록 할 수 있음
- params="mode"
- params="!mode"
- params="mode=debug"
- params="mode!=debug"
- params={"mode=debug","data=good"}
위 실행 결과를 Postman으로 비교 가능하다
매핑 시 헤더에 특정 조건 넣기
@GetMapping(value = "/mapping-header", headers = "mode=debug")
public String mappingHeader() {
log.info("mappingHeader");
return "ok";
}
미디어 타입에 조건 추가해 매핑하기
@PostMapping(value = "/mapping-consume", consumes = "application/json")
public String mappingConsumes() {
log.info("mappingConsumes");
return "ok";
}
본 게시글은 김영한 님의 '스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술' 강의를 구매 후 정리하기 위한 포스팅입니다.
내용을 임의로 추가, 수정, 삭제한 부분이 많으며 정확한 이해를 위해서 강의를 구매하시는 것을 추천 드립니다.
참조
- @PathVariable: https://www.baeldung.com/spring-pathvariable
반응형
'Develop > Spring+JPA' 카테고리의 다른 글
[Spring] http 요청 데이터 조회 (0) | 2021.08.09 |
---|---|
[Spring] 헤더 조회 (0) | 2021.07.14 |
[스프링 MVC] @Controller, @RequestMapping (0) | 2021.05.27 |
[스프링 MVC] 뷰 리졸버 (0) | 2021.05.26 |
[스프링 MVC] 핸들러 매핑, 핸들러 어댑터 (0) | 2021.05.24 |