1 분 소요


요청 매핑

MappingController

@RestController
public class MappingController {

    private Logger log = LoggerFactory.getLogger(getClass());

    @RequestMapping("/hello-basic")
    public String helloBasic() {
        log.info("helloBasic");
        return "ok";
    }
}
  • @RequestMapping("/hello-basic")
    • /hello-basic URL이 호출되면 메서드가 실행되도록 매핑.
    • 대부분의 속성을 배열로 제공하므로 다중 설정이 가능.
      • {"/hello-basic", "/hello-hi"}

둘 다 허용

다른 URL이지만, 스프링은 URL 요청들을 같은 요청으로 매핑한다.

  • 매핑: /hello-basic
  • URL 요청: /hello-basic, /hello-basic/


PathVariable 사용

@GetMapping("/mapping/{userId}")
public String mappingPath(@PathVariable("userId") String data) {
    log.info("mappingPath userId={}", data);
    return "ok";
}
  • RequestMapping은 URL 경로를 템플릿화 할 수 있는데, @PathVariable을 사용하면 매칭 되는 부분을 편리하게 조회할 수 있다.
  • @PathVariable의 이름과 파리미터 이름이 같으면 생략 가능.
    public String mappingPath(@PathVariable String userId) {
    


미디어 타입 조건 매핑

Content-Type, consume

@PostMapping(value = "/mapping-consume", consumes = "application/json")
public String mappingConsumes() {
    log.info("mappingConsumes");
    return "ok";
}

HTTP 요청의 Content_Type 헤더를 기반으로 미디어 타입으로 매핑.

consumes = “text/plain”
consumes = {“text/plain”, “application/*”}
consumes = MediaType.TEXT_PLAIN_VALUE

Accept, produce

@PostMapping(value = "/mapping-produce", produces = "text/html")
public String mappingProduces() {
        log.info("mappingProduces");
        return "ok";
}

HTTP 요청의 Accept 헤더를 기반으로 미디어 타입으로 매핑.

produces = “text/plain”
produces = {“text/plain”, “application/*”}
produces = MediaType.TEXT_PLAIN_VALUE
produces = “text/plain;charset=UTF-8”


요청 매핑 - API 예시

회원 관리 API

  • 회원 목록 조회: GET /users
  • 회원 등록: POST /users
  • 회원 조회: GET /users/{userId}
  • 회원 수정: PATCH /users/{userId}
  • 회원 삭제: DELETE /users/{userId}

MappingClassController

@RestController
@RequestMapping("/mapping/users")
public class MappingClassController {

    @GetMapping
    public String users() {
        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;
    }
}


<출처 : 인프런 - 스프링 MVC 1편 : 백엔드 웹 개발 핵심 기술(김영한)>

댓글남기기