더북(TheBook)

이 예제에서 먼저 한 일은 getLicense() 메서드에 @GetMapping 애너테이션을 추가한 것이다. 두 매개변수(valuemethod)를 전달받는 @RequestMapping(value="/{licenseId}", method=RequestMethod.GET) 애너테이션도 같은 용도로 사용할 수 있다. 메서드용 @GetMapping 애너테이션을 사용해서 getLicense() 메서드에 대해 다음과 같은 엔드포인트를 만들 수 있다.

v1/organization/{organizationId}/license/{licenseId}

왜 그럴까? 클래스 맨 윗부분을 보면 컨트롤러에 유입되는 모든 HTTP 요청과 매칭되는 최상위 레벨 애너테이션을 지정했다. 즉, 먼저 최상위 레벨 애너테이션 값을 추가한 후 메서드 레벨 값을 추가했다. 두 번째 애너테이션의 매개변수인 method는 메서드와 매칭하는 데 사용하는 HTTP 동사를 지정한다. getLicense() 메서드에서 RequestMethod.GET 열거형으로 제공된 GET 메서드와 일치한다.

코드 3-4에서 두 번째로 주목할 것은 getLicense() 메서드의 매개변수에 있는 @PathVariable 애너테이션이다. 이것은 수신 URL에 전달된 매개변수 값({parameterName} 구문으로 표시)을 메서드의 매개변수에 매핑한다. 코드 3-4의 GET 서비스는 URL로 전달된 두 매개변수(organizationIdlicenseId)를 메서드의 매개변수에 매핑한다.

@PathVariable("organizationId") String organizationId 
@PathVariable("licenseId") String licenseId

마지막으로 ResponseEntity 반환 객체를 살펴보자. ResponseEntity는 상태 코드, 헤더, 바디를 포함한 모든 HTTP 응답을 나타낸다. 이전 코드에서는 바디(body)License 객체와 200(OK) 상태 코드를 반환할 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.