SPRING

[Swagger] RequestHeader 설정하기

개발하는고양이 2024. 1. 29. 14:57
반응형

환경

- spring boot : 2.6.3

- springfox

도입 배경

개인 프로젝트를 만들던중, swagger에서 회원정보를 얻는 api 를 실행했다.

request header 에 토큰 값을 넣었는데 자꾸 에러가 났다.

@GetMapping
    @PreAuthorize("hasRole('MEMBER')")
    public ResponseEntity<String> getProfileInfo(
    	@RequestHeader("Authorization") String token){
        return ResponseEntity.ok("welcome!");
    }
Required request header 'Authorization' for method parameter type String is not present

 

 

postman에서는 직접 넣어줘서 그런지  성공했다.

 

그렇다면 swagger에서 헤더 설정을 해주면 되겠지.

Swagger 에서 헤더 설정하기

@Configuration
public class SwaggerConfig {
    @Bean
    public OpenAPI openAPI() {
        Info info = new Info()
                .title("Puzzle Blog Platform API Document")
                .version("v0.0.1")
                .description("퍼즐 api 명세서입니다.");

        // SecuritySecheme명
        String jwtSchemeName = "jwtAuth";
        // API 요청헤더에 인증정보 포함
        SecurityRequirement securityRequirement = new SecurityRequirement().addList(jwtSchemeName);
        // SecuritySchemes 등록
        Components components = new Components()
                .addSecuritySchemes(jwtSchemeName, new SecurityScheme()
                        .name(jwtSchemeName)
                        .type(SecurityScheme.Type.HTTP) // HTTP 방식
                        .scheme("bearer")
                        .bearerFormat("JWT")); // 토큰 형식을 지정하는 임의의 문자(Optional)

        return new OpenAPI()
                .components(new Components())
                .info(info)
                .addSecurityItem(securityRequirement)
                .components(components);
    }
}

swagger 확인해보면 authrorize 버튼이 새로 생겼다.

 

토큰 값 입력

 

그러면 swagger에서 자동으로 헤더에 토큰값을 넣어주어 일일이 입력하지 않아도 된다.

 

reference

https://velog.io/@u-nij/Spring-Boot-Swagger-3.0-%EC%84%A4%EC%A0%95-JWT-%EC%9D%B8%EC%A6%9D-%EC%84%A4%EC%A0%95-Profile%EB%A1%9C-%ED%99%98%EA%B2%BD%EB%B3%84-%EC%84%A4%EC%A0%95

반응형