요청매핑은 말 그대로 요청 왔을 때 어떤 컨트롤러와 매칭해야 하는 지
@Slf4j
@RestController
public class MappingController {
@RequestMapping(value = {"/hello-basic", "hello-go"}, method = RequestMethod.GET)
public String helloBasic(HttpServletRequest request){
log.info("basic");
return request.getRequestURI();
}
}
저렇게 uri경로 두개로 받을 수 있다.
@GetMapping("/mapping/{userId}")
public String mappingPath(@PathVariable("userId") String data){
log.info("mappingPath userId={}",data);
return "ok";
}
이렇게 경로로 들어온 걸 값으로 활용할 수 있다.
http://localhost:8080/mapping/userA
userA가 들어온다. 말 그대로 경로변수.
@GetMapping("/mapping/{userId}")
public String mappingPath(@PathVariable String userId){
log.info("mappingPath userId={}",userId);
return "ok";
}
이렇게 변수명이랑 key이름을 똑같이 쓰면 이렇게 사용도 가능함.
@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 = "hi=hello")
public String mappingParam(){
log.info("mappingParam");
return "ok";
}
파라미터 중 "hi=hello"라는 파라미터가 있어야 함.
http://localhost:8080/mapping-param?hi=hello
@GetMapping(value = "/mapping-param",params = "hi")
public String mappingParam(){
log.info("mappingParam");
return "ok";
}
이렇게 하면 파라미터 값은 상관없이 hi라는 파라미터가 존재하면 됨.
params="key"
params="!key" key가없어야 함
params="key=value" key가 value여야 함
params="key!=value"
params= {"key1=value","key2=value"} 여러개 배열로, 둘다 있어야 함.
@GetMapping(value = "/mapping-header", headers= "key=value")
public String mappingHeader(){
log.info("mappingParam");
return "ok";
}
이렇게 헤더로도 검사 가능.
헤더에 저게 있어야 함.
@PostMapping(value = "/mapping-consume",consumes = "application/json")
public String mappingConsumes(){
log.info("mappingConsumes");
return "ok";
}
consumes로 content-type도 검사해 받을 수 있다.
저걸로 타입마다 따로 받는것도 가능하다.
content-type은 헤더에 있지만, consumes로 써야 하는 이유는 저걸 써야 스프링이 내부적으로 처리하는 무언가가 있다.
@PostMapping(value = "/mapping-produce", produces = "text/html")
public String mappingProduce(){
log.info("mappingProduce");
return "ok";
}
요청헤더에 Accept라는게 있다. 이건 내가 어떤 타입을 허락한다는 뜻이다. 보통 */*로 되어 있다.
저 produces는 내가 응답에 생성할 타입이라는 거다.
근데 만약 요청에 Accept헤더를 무언가로 바꿔서 http://localhost:8080/mapping-produce 에다 보내면 만약 text/html이 아니라면 406(Not Accepted)를 받는다.
@PostMapping(value = "/mapping-produce", produces = MediaType.TEXT_HTML_VALUE)
public String mappingProduce(){
log.info("mappingProduce");
return "ok";
}
'스프링 > 3. 스프링 MVC' 카테고리의 다른 글
41. 요청 파라미터 종류 (0) | 2023.08.12 |
---|---|
40. 요청 종류에 따른 api 구현 (0) | 2023.08.12 |
38. 로그 (0) | 2023.08.11 |
37. 스프링MVC 시작 (0) | 2023.08.11 |
36. 실용적인 형식 (0) | 2023.08.11 |