코드/dev
Swagger UI
미로처럼
2023. 11. 27. 17:05
728x90
신규 API를 작성하여 배포할 일이 생겨 복습겸 스웨거 어노테이션을 정리하고자 한다.
@ApiOperation(
value = "유저 정보 조회"
, notes = "유저의 ID 를 통해 해당 아이디의 상세 정보 조회 한다.")
@ApiImplicitParams(
{
@ApiImplicitParam(
name = "id"
, value = "자격증 아이디"
, required = true
, dataType = "string"
, paramType = "path"
, defaultValue = "None"
)
,
@ApiImplicitParam(
name = "fields"
, value = "응답 필드 종류"
, required = false
, dataType = "string"
, paramType = "query"
, defaultValue = ""
)
})
@ApiResponses({
@ApiResponse(code = 200, message = "성공입니다.")
, @ApiResponse(code = 400, message = "접근이 올바르지 않습니다.")
})
@GetMapping("/user/{id}")
public ResponseEntity<UserResponse> getUser(@PathVariable(name = "id") String id) {
return userService.findUserInfoById(id);
}
@ApiOperation = Method 설명
- Controlloer 안에 method 의 설명을 추가할 수 있다.
@ApiImplicitParam = RequestParaemter 설명
- 해당 API Method 호출에 필요한 Paraemter들의 설명르 추가할 수 있다.
- ApiImplicitParams을 통해 복수개의 정보를 사용 할 수 있다.
@ApiResponse = Response 설명
- 해당method의 Response에 대한 설명을 작성할 수 있다.
- 복수개의 Response 에 대한 설명을 추가하고 싶다면, ApiResponse를 통해 사용 가능하다.
스웨거의 기본 Response message 삭제방법
- 위와 같이 기본 response 가 노출이 되는데 이를 제거 하기 위헤서는 Swagger config에 Docket에 useDefaultResponseMessages(false)를 설정해주면 된다. (설정 시 401, 403, 404 응답이 사라진다.)
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class UserRequest {
@ApiModelProperty(
name = "id"
, example = "gillog"
)
@ApiParam(value = "사용자 ID", required = true)
private String id;
@ApiModelProperty(example = "teter문")
@ApiParam(value = "사용자 이름")
private String name;
@ApiParam(value = "token 갱신 값")
private String tokenRefresh;
}
@ApiModelProperty = DTO 예제 설명
- ApiModelProperty를 DTO Class Field에 추가하면, 해당 DTO Field의 예제 Data를 추가할 수 있다.
- property의 name은 생략할 수 있다.
@ApiParam = DTO field 설명
- DTO field에 대한 설명을 추가할 수 있다.
- Controlloer PathVarialbe 기타 파라메터에 대한 설명도 추가 가능
@ApiIgonre
@GetMapping("/user/{id}")
public ResponseEntity<UserResponse> getUser(@PathVariable(name = "id") String id) {
return userService.findUserInfoById(id);
}
@ApiIgnore Swagger UI 표기제외
- Controller 나 메소드를 스웨거 상 비노출 처리 할 수 있다.
- ApiOperation 옵션 hidden을 true로 만들어서 엔드포인트를 숨길 수 있다.
728x90