매핑 정보

Ena JJJ·2023년 2월 5일
0

Spring

목록 보기
29/44

매핑 정보

@RestController

  • @Controller 는 반환 값이 'String'이면 뷰 이름으로 인식된다. 그래서 뷰를 찾고 뷰가 랜더링 된다.
  • @RestController 는 반환 값으로 뷰를 찾는 것이 아니라, HTTP 메시지 바디에 바로 입력 한다. 따라서 실행 결과로 ok 메세지를 받을 수 있다

@RequestMapping("/hello-basic")

  • /hello-basic URL호출이 오면 이 메서드가 실행되도록 매핑한다.
  • 대부분의 속성을 배열[]로 제공하므로 다중 설정이 가능하다.{"/hello-basic", "hello-go"}

HTTP 메서드

@RequestMapping에 method 속성으로 HTTP 메서드를 지정하지 않으면 HTTP 메서드와 무관하게 호출된다. 모두 허용 GET, HEAD, POST, PUT, PATCH, DELETE
따라서 method를 통해 지정할 수 있다.(method = RequestMethod.GET)

HTTP 메서드 매핑 축약

@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMapping

PathVariable(경로 변수) 사용

    /**
     * PathVariable 사용
     * 변수명이 같으면 생략 가능
     *
     * @PathVariable("userId") String UserId -> @PathVariable userId
     */
    @GetMapping("/mapping/{userId}")
    public String mappingPath(@PathVariable("userId") String data) {
        log.info("mappingPath userId ={}", data);
        return "ok";
    }

파라미터로 추가 매핑

 /*
     * 파라미터로 추가 매핑
     * params = "mode",
     * params = "!mode"
     * params = "mode=debug"
     * params = "mode != debug"
     * params = {"mode=debug","data = good"}
     */
    @GetMapping(value = "/mapping-param", params = "mode=debug")
    public String mappingParam() {
        log.info("mappingParam");
        return "ok";
    }

특정헤더로 추가 매핑

/**
     * 특정 헤더로 추가 매핑
     * headers="mode",
     * headers="!mode"
     * headers="mode=debug"
     * headers="mode!=debug" (! = )
     */
    @GetMapping(value = "/mapping-header", headers = "mode=debug")
    public String mappingHeader() {
        log.info("mappingHeader");
        return "ok";
    }

Content-type 기반 추가 매핑

 /*
     * Content-Type 헤더 기반 추가 매핑 Media Type
     * consumes = "application/json"
     * consumes = "!application/json"
     * consumes = "application/*"
     * consumes = "*\/*"
     * MediaType.APPLICATION_JSON_VALUE
     */
    @PostMapping(value = "/mapping-consume", consumes = "application/json")
    public String mappingConsumes() {
        log.info("mappingConsumes");
        return "ok";
    }

Accept 헤더 기반

 /*
     * Accept 헤더 기반 Media Type
     * produces = "text/html"
     * produces = "!text/html"
     * produces = "text/*"
     * produces = "*\/*"
     */
    @PostMapping(value = "/mapping-produce", produces = "text/html")
    public String mappingProduces() {
        log.info("mappingProduces");
        return "ok";
    }

0개의 댓글