요청 매핑

@RequestMapping

@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-go"})

  • 허용 범위

    • /hello-basic으로 매핑해놓고 /hello-basic/으로 요청해도 같은 요청으로 매핑한다.

  • 메서드 속성

    • GET 등 HTTP 메서드를 지정하지 않으면 뭘로 요청하든 무관하게 호출된다.

HTTP 메서드 매핑

  • 해당 HTTP 메서드로 요청하지 않으면 405 Method Not Allowed를 보낸다.

경로 변수(PathVariable)

  • 최근 HTTP API는 이처럼 리소스 경로에 식별자를 넣는 스타일을 선호한다.

    • /users/1

    • ?를 넣는 쿼리 스트링과는 다르다.

  • @PathVariable의 이름과 파라미터의 이름이 같으면 생략할 수 있다.

    • 그렇다고 애너테이션 자체를 생략할 수는 없다.

다중 사용

  • 다중 사용도 가능하다.

파라미터 조건 매핑

  • 파라미터에 조건을 걸 수도 있다.

  • 예시는 http://localhost:8080/mapping-param?mode=debug 처럼 파라미터에 설정한 문자열이 있어야 매핑된다.

  • mode=debug라는 문자열 없이 요청하면 400 Bad Request가 뜬다.

  • 경로 변수 방식을 많이 사용하는 추세라 잘 쓰지 않는다.

헤더 조건 매핑

  • 헤더에 특정 문자가 있어야만 매핑된다.

  • 역시 잘 쓰지는 않는다.

미디어 타입 조건 매핑

  • header의 content-type에 따라 매핑한다.

  • Content-type always is about the content of the current request or response.

  • html인지 등 타입에 따라 쓰려면 headers가 아니라 consumes를 사용해야 한다.

    • 내부에서 처리하는 내용이 다르다.

  • Accept 헤더의 미디어 타입을 매핑한다.

  • 웹 브라우저 측에서 받아들일 수 있는 타입을 이야기 한다.

    • Accept indicates what kind of response from the server the client can accept.

    • 예시는 클라이언트는 text/html 이란 타입을 받아들일 수 있다 는 뜻이다.

예시

  • 회원 목록 조회

    • GET

    • /users

  • 회원 등록

    • POST

    • /users

  • 회원 조회

    • GET

    • /users/{userId}

  • 회원 수정

    • PATCH

    • /users/{userId}

  • 회원 삭제

    • DELETE

    • /users/{userId}

Last updated

Was this helpful?