반응형
현재 Springdoc을 이용한 swagger를 사용하고 있는데요. 프로젝트를 진행하다보니 글로벌 header를 설정하는 기능이 필요했습니다
일반적으로 header를 파라미터로 받으면 swagger에 생성되는데요. 아래코드처럼 구현하면 됩니다
@Operation(description = "test")
@PostMapping("/test")
public void userLogout(@RequestHeader("headerParam1") String headerParam1) throws Exception {
log.info(headerParam1);
}
대부분의 메서드에 해당 파라미터가 필요하다면 일일이 넣어주는것은 불편한 일입니다. 그래서 swagger config에 아래 코드를 추가해 주면 간단하게 글로벌 헤더를 추가 할 수 있습니다
@Configuration
public class SwaggerConfig {
@Bean
public OperationCustomizer customize() {
return (operation, handlerMethod) -> {
operation.addParametersItem(
new Parameter()
.in("header")
.required(false)
.schema(new StringSchema())
.description("헤더파라미터")
.name("headerParam1")
);
return operation;
};
}
}
그런데 일부 메서드는 이 헤더 파라미터가 필요없을 경우도 있게되겠죠. 그렇다면 handlerMethod를 이용하여 조건문을 추가 해주시면 됩니다. 아래 코드를 참고해주세요
@Configuration
public class SwaggerConfig {
@Bean
public OperationCustomizer customize() {
return (operation, handlerMethod) -> {
if (!handlerMethod.getMethod().getName().equals("excludeHeader")) {
operation.addParametersItem(
new Parameter()
.in("header")
.required(false)
.schema(new StringSchema())
.description("헤더파라미터")
.name("headerParam1")
);
}
return operation;
};
}
}
이렇게 조건문을 추가하게되면 컨트롤러 메서드명 excludeHeader 인 메서드는 headerParam1이 추가되지 않게 됩니다.
반응형
'Spring' 카테고리의 다른 글
[JAVA] JAVA에서 윈도우, 우분투 NTP 서버 설정 변경하는 방법 (0) | 2023.03.22 |
---|---|
[Spring] Springdoc Swagger 그룹, 정렬, 카테고리 접기 (0) | 2023.03.21 |
[Spring] Springdoc을 이용한 Swagger 적용 (0) | 2023.03.02 |
[Spring] MapStruct를 이용한 DTO <-> Entity 사용시 조인관계 매핑 (0) | 2023.03.01 |
[Spring] @Valid List형태로 받으면 안되는 현상 해결방안 (0) | 2023.02.28 |
댓글