개발자의 길

[Swagger] Springdoc 설정에 header 값 설정 추가하기 본문

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를 설정할수 있다.

 

수고링!



이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
공유하기 링크
Comments