JAVA/Spring & Spring Boot
[Spring & Spring Boot / Annotation] REST API 구현 시 자주 사용하는 어노테이션 모음 및 간단 설명
신우섭
2020. 7. 16. 16:42
@RestController
RestController의 주용도는 Json/Xml 형태로 객체 데이터를 반환하는 것이다.
주로 RestAPI Control Class에 선언한다.
RestController가 선언된 클래스의 내부 함수들은 return 값이 Json/Xml 형식으로 자동 변환되어 반환된다.
샘플@RestController public class HotelController extends AbstractRestHandler {
@RequestMapping
REST API 호출 시 작성된 URL 의 method 값에 따라 맵핑 시켜준다.
RestController이 선언된 클래스의 내부 함수 상단에 선언해준다.
샘플@RequestMapping(value = "", method = RequestMethod.POST, consumes = {"application/json", "application/xml"}, produces = {"application/json", "application/xml"})
consumes
- consumes는 Content-Type이 consumes에 명시한 media-type과 같아야한다.
샘플
curl -XPOST "localhost:8080/test" -H "Content-Type:application/json"
content-type
- content-type은 client가 보내는 content의 타입이다.
produces
- produces는 Accet Header가 produces에 명시한 Media Type과 같을때에 해당 Type으로 response를 보내준다
accept
- accept는 client가 backend 서버에게 어떤 형식(Media Type)으로 달라고 하는 요청의 방식 (ex. JSON 방식으로 주세요 => Accept:application/json)
샘플
curl -XGET "localhost:8080/test" -H "Accept:application/json"
- consumes는 Content-Type이 consumes에 명시한 media-type과 같아야한다.
@ResponseStatus
ResponseStatus는 부여된 메소드(함수)의 응답 상태 코드를 지정할 수 있다. (ex. 200 OK, 201 Created, 202 Accepted 등)
아무것도 지정하지 않으면 200 OK가 반환되다.
샘플@RestController @RequestMapping("/hello") public class HelloController { @RequestMapping(method=RequestMethod.GET) @ResponseStatus(HttpStatus.BAD_REQUEST) public void getMethod() { } }
@RequestBody
HTTP로 받은 Body 데이터를 자바 객체로 받기 위하여 사용
샘플@RestController public class LoginWebController { // HTTP 요청의 내용을 Member 객체에 매핑하기위해 @RequestBody 애너테이션을 설정한다. @RequestMapping(value="/member/login", method = RequestMethod.POST) public MemberResultDto login(@RequestBody Member member) { MemberResultDto memberResultDto = memberService.login(member); return memberResultDto; } }
@ApiParam
ApiParam은 멤버 변수에 대한 설명 및 다양한 설정을 지원합니다.
value
- 저장되야할 값에 대한 설명을 명시합니다.
required
- 필수 여부를 지정합니다.
샘플
@ApiParam(value = "member age", required = true) private int age;
@RequestParam
HTTP를 통하여 받아온 데이터를 단일 파라미터 변환 해준다.
샘플@RequestParam(value = "page", required = true, defaultValue = DEFAULT_PAGE_NUM) Integer page;
value
- HTTP를 통하여 넘어온 쿼리 스트링의 Key값
required
- 필수로 사용 여부 true=필수사용, false=사용하든 안하든 상관없음
defaultValue
- HTTP에서 해당 Key로 넘어온 값이 없다면 들어갈 기본값