swagger api에 대한 정보를 추가해 보았다.
- endpoint에 설명 추가
- Api 이름과 설명 추가
Configuration
SwaggerConfig
@Configuration
@RequiredArgsConstructor
public class SwaggerConfig {
private final TypeResolver typeResolver;
@Bean
public Docket api() {
return new Docket(DocumentationType.OAS_30)
//문서 설명
.apiInfo(new ApiInfoBuilder()
.title("MutsaSNS Swagger")
.description("로그인, 포스트, 댓글, 좋아요, 알림 기능")
.version("1.0.0")
.build())
//swagger pageable 설정
.alternateTypeRules(AlternateTypeRules
.newRule(typeResolver.resolve(Pageable.class), typeResolver.resolve(Page.class)))
.securityContexts(Arrays.asList(securityContext()))
.securitySchemes(Arrays.asList(apiKey()))
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
@Getter
@Setter
@ApiModel
static class Page {
@ApiModelProperty(value = "페이지 번호")
private Integer page;
}
//Swagger authorization 추가
private SecurityContext securityContext() {
return SecurityContext.builder().securityReferences(defaultAuth()).build();
}
private List<SecurityReference> defaultAuth() {
AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
authorizationScopes[0] = authorizationScope;
return Arrays.asList(new SecurityReference("Authorization", authorizationScopes));
}
private ApiKey apiKey() {
return new ApiKey("Authorization", "Authorization", "header");
}
}
apiInfo 부분에 title, discription, version 정보를 추가하였다.
Controller
ex) AlarmController
@RestController
@RequestMapping("/api/v1/alarms")
@RequiredArgsConstructor
public class AlarmController {
private final AlarmService alarmService;
@GetMapping
@ApiOperation(value = "유저 알람 목록 조회")
public Response<Page<AlarmDto>> getAlarm(@PageableDefault(size=20, sort="createdAt", direction = Sort.Direction.DESC) Pageable pageable,
@ApiIgnore Authentication authentication) {
Page<AlarmDto> alarmDtos = alarmService.getAlarm(pageable, authentication.getName());
return Response.success(alarmDtos);
}
}
@ApiOperation을 이용하여 endpoint마다 설명을 추가하였다.
원래는 해당 controller에서의 method의 이름이 출력되었는데, 지정한 value 값으로 변한다.
<EC2 배포 URL>
http://ec2-3-35-225-29.ap-northeast-2.compute.amazonaws.com:8080/swagger-ui/
<전체 Reference>
https://kim-jong-hyun.tistory.com/49
'프로젝트 > 멋사 개인 프로젝트 (mutsa-SNS)' 카테고리의 다른 글
[24] mutsa-SNS-2 6일차 - (1) 알람 기능 test code (0) | 2023.01.10 |
---|---|
[23] mutsa-SNS-2 5일차 - 알람 기능 추가 (0) | 2023.01.10 |
[22] mutsa-SNS-2 4일차 - 마이 피드 기능 test code (0) | 2023.01.09 |
[21] mutsa-SNS-2 3일차 - (2) 마이 피드 기능 구현 (0) | 2023.01.05 |
[20] mutsa-SNS-2 3일차 - (1) soft delete 관련 리펙토링 (@Transactional 이슈) (0) | 2023.01.05 |