서버로 요청되는 URL리스트를 HTML화면으로 문자화 및 테스트를 할 수 있게 해주는 라이브러리이다.
API를 엑셀이나 가이드 문서를 통해 관리하는 방식은 지속적인 업데이트를 통해야하지만
Swagger를 이용하면 API Spec 문서를 자동화 하여 간편하게 관리 및 테스트할 수 있다는 장점이 있다.
@ApiOperation
:: 해당 컨트롤러 내부에 설명을 추가할 수 있다.
@ApiOperation(value = "Replies POST", notes = "POST 방식의 댓글 등록")
@PostMapping(value = "/", consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Map<String, Long>> register(@RequestBody ReplyDTO replyDTO){
log.info(replyDTO);
Map<String, Long> resultMap = Map.of("rno", 11L);
return ResponseEntity.ok(resultMap);
}
Swagger UI에서 알아보기 쉽게 해당 컨트롤러에 이름을 부여 (@ApiOperation())
또한 register()는 ReplyDTO 인자값을 이용해 파라미터를 수집하지만 @RequestBody 어노테이션을 표시하고 있다.
이는 JSON 문자열을 ReplyDTO로 변환하기 위함이다.
@PostMapping에는 consumes라는 속성을 사용하고 있는데 해당 메서드를 받아 소비(consume)하는 데이터가 어떤 종류인지 명시할 수 있다.
이 경우에는 JSON타입의 데이터를 처리하는 메서드임을 명시한다.
public class ReplyController {
@ApiOperation(value = "Replies POST", notes = "POST 방식의 댓글 등록")
@PostMapping(value = "/", consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Map<String, Long>> register(@RequestBody ReplyDTO replyDTO){
log.info(replyDTO);
Map<String, Long> resultMap = Map.of("rno", 111L);
return ResponseEntity.ok(resultMap);
}
}
public class ReplyController {
@ApiOperation(value = "Replies POST", notes = "POST 방식의 댓글 등록")
@PostMapping(value = "/", consumes = MediaType.APPLICATION_JSON_VALUE)
public Map<String, Long> register(@Valid @RequestBody ReplyDTO replyDTO, BindingResult bindingResult) throws BindException{
log.info(replyDTO);
if(bindingResult.hasErrors()){
throw new BindException(bindingResult);
}
Map<String, Long> resultMap = new HashMap<>();
resultMap.put("rno", 111L);
return resultMap;
}
}