본문 바로가기
Develop/Spring+JPA

[Spring] 요청 매핑

by 연로그 2021. 6. 25.
반응형

이제 간단한 요청 매핑 예제를 만들어서 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편 - 백엔드 웹 개발 핵심 기술' 강의를 구매 후 정리하기 위한 포스팅입니다.

내용을 임의로 추가, 수정, 삭제한 부분이 많으며 정확한 이해를 위해서 강의를 구매하시는 것을 추천 드립니다.

 

inf.run/B756

 

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의

웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., 원

www.inflearn.com

 

참조

- @PathVariable: https://www.baeldung.com/spring-pathvariable

반응형