💻본 포스팅은 '스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 김영한'님의 강의를 듣고 작성되었습니다.
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard
[요청매핑의 여러가지 사용 예시 코드]
package hello.springmvc.basic.requestmapping;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;
@RestController
public class MappingController {
private Logger log = LoggerFactory.getLogger(getClass());
//기본 요청으로 HTTP 메서드 모두 허용하는 경우다.
@RequestMapping("/hello-basic")
public String helloBasic(){
log.info("hellobasic");
return "ok";
}
//특정 HTTP메서드 요청에만 허용하는 경우
@RequestMapping(value = "/mapping-get-v1", method = RequestMethod.GET)
public String mappingGetV1(){
log.info("mapping-get-v1");
return "ok";
}
//특정 HTTP 메서드 요청 허용의 축약버전
@GetMapping("/mapping-get-v2")
public String mappingGetV2(){
log.info("mapping-get-v2");
return "ok";
}
//최근 HTTP API는 리소스 경로에 식별자 넣는 것을 선하고 아래가 그 경우다.
@GetMapping("/mapping/{userId}")
public String mappingPath(@PathVariable("userId") String data){
log.info("mappingPath userId = {}",data);
return "ok";
}
//pathVariable 다중 매핑(사용)한 경우우
@GetMapping("/mapping/{userId}/orders/{orderId}")
public String mappingPath(@PathVariable("userId") String userId, @PathVariable Long orderId){
log.info("mappingPath userId = {}, orderId = {}",userId, orderId);
return "ok";
}
//특정 파라미터 조건 매핑(쿼리 파라미터를 조건 매핑할 수 있다) 잘 사용 X
//파라미터의 mode가 debug라고 나와야 한다.
@GetMapping(value = "/mapping-param", params = "mode=debug")
public String mappingParam(){
log.info("mappingParam");
return "ok";
}
//특정헤더 조건 추가 매핑한 경우
@GetMapping(value = "mapping-header", headers = "mode = debug")
public String mappingHeader(){
log.info("mappingHeader");
return "ok";
}
//미디어 타입 조건 매핑 - HTTP 요청 Content-Type, consume
//consumes = MediaType.APPLICATION_JSON_VALUE로 사용 가능
@PostMapping(value = "/mapping-consume", consumes = "application/json")
public String mappingConsumes() {
log.info("mappingConsumes");
return "ok";
}
//미디어 타입 조건 매핑 - HTTP요청 Accept, produce
//produces = MediaType.TEXT_HTML_VALUE로 사용 가능
@PostMapping(value = "/mapping-produce", produces = "text/html")
public String mappingProduces() {
log.info("mappingProduces");
return "ok";
}
}
[요청 매핑 - API 예시]
[BASIC]
package hello.springmvc.basic.requestmapping;
import org.springframework.web.bind.annotation.*;
@RestController
public class MappingClassController {
@GetMapping("/mapping/users")
public String user(){
return "get users";
}
@PostMapping("/mapping/users")
public String addUser(){
return "post user";
}
@GetMapping("/mapping/users/{userId}")
public String findUser(@PathVariable String userId){
return "get UserId = "+userId;
}
@PatchMapping("/mapping/users/{userId}")
public String updateUser(@PathVariable String userId){
return "update UserId = "+userId;
}
@DeleteMapping("/mapping/users/{userId}")
public String deleteUser(@PathVariable String userId){
return "delete UserId = "+userId;
}
}
[축약 코드]
package hello.springmvc.basic.requestmapping;
import org.springframework.web.bind.annotation.*;
@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;
}
}
- 위와 같이 계층을 이용한 url 매핑이 요즘 선호되는 방식이라고 한다.
'Back-End > Spring' 카테고리의 다른 글
[Spring MVC][HTTP 요청] - 2. 요청 파라미터 - 쿼리 파라미터, HTML Form, @RequestParam, @ModelAttribute (0) | 2022.03.29 |
---|---|
[Spring MVC][HTTP 요청] - 1. 기본, 헤더 조회 (0) | 2022.03.29 |
[Spring MVC][스프링MVC 기본 기능] - 로그 (0) | 2022.03.23 |
[Spring MVC][스프링MVC 구조] - 스프링 MVC (0) | 2022.03.18 |
[Spring MVC][서블릿, JSP, MVC 패턴] - 서블릿, JSP, MVC 패턴 (0) | 2022.03.09 |