반응형
환경
- 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
반응형
'SPRING' 카테고리의 다른 글
RedisRepository 이용하여 refreshToken 관리하기 (1) | 2024.02.07 |
---|---|
Redis 사용방법 (feat. RedisTemplate) (0) | 2024.02.06 |
[Feign Client] 정리 및 사용법 (0) | 2024.01.25 |
[QueryDSL] 정리 및 spring boot에서 사용법 (0) | 2024.01.21 |
Swagger 사용방법(feat.springdoc) (1) | 2023.12.30 |