4. JAVA
[Swagger] Springdoc 설정에 header 값 설정 추가하기
자르르
2024. 6. 26. 16:34
api 개발을 하다보면, 필연적으로 swagger 셋팅을 하기 마련이다.
그런데 api를 외부에 제공하기 위해선, 필수로 헤더에 access token 같은 암호화된 값을 받게끔 개발을 진행 할 것이다.
하지만 기본 swagger 설정에선, header 설정하는 부분이 없어서, config 에서 약간 수정을 하면 바로 사용 가능하다
내가 한 버전은
implementation group: 'org.springdoc', name: 'springdoc-openapi-starter-webmvc-ui', version: '2.5.0'
이거고, 굳이 starter-webmvc-ui가 아니더라도 springdoc 다른 라이브러리를 써도 상관없다.
@Configuration
public class SwaggerConfig {
// 이 부분은 multipart(첨부파일)과 다른 파라메타를 같이 쓰기 위한 설정
public SwaggerConfig(MappingJackson2HttpMessageConverter converter) {
var supportedMediaTypes = new ArrayList<>(converter.getSupportedMediaTypes());
supportedMediaTypes.add(new MediaType("application", "octet-stream"));
converter.setSupportedMediaTypes(supportedMediaTypes);
}
@Value("${title}")
private String devTitle;
@Bean
public OpenAPI openAPI() {
Info info = new Info()
.title("My API " + devTitle)
.version("1.0")
.description("My API");
//Constants.AUTH_TOKEN_HEADER = "MY-ACCESS-TOKEN"
List<SecurityRequirement> security = Arrays.asList(new SecurityRequirement().addList(Constants.AUTH_TOKEN_HEADER));
return new OpenAPI()
.components(new Components()
.addSecuritySchemes(Constants.AUTH_TOKEN_HEADER, apiKeySecuritySchema()))
.info(info)
.security(Collections.singletonList(new SecurityRequirement().addList(Constants.AUTH_TOKEN_HEADER)));
}
public SecurityScheme apiKeySecuritySchema() {
return new SecurityScheme()
.name(Constants.AUTH_TOKEN_HEADER) // authorisation-token
.description("Description about the NAS TOKEN")
.in(SecurityScheme.In.HEADER)
.type(SecurityScheme.Type.APIKEY);
}
}
잘 넣는다면 상단 우측에 초록색 버튼이 생긴다. 이 버튼을 눌러서 HEADER를 설정할수 있다.
수고링!