HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
♥️
2기 최종 프로젝트 팀별 공간
/
[팀 BackFro💯] ArtZip: 세상 모든 전시회를 한 번에
[팀 BackFro💯] ArtZip: 세상 모든 전시회를 한 번에
/
☠️
백엔드 기술 문서
/
📄
Swagger 설정
📄

Swagger 설정

 

Pageable

페이징에 대한 정보를 Pageable로 받을 때 Swagger에서 필요 없는 정보까지 받을 수 있도록한다. 이를 해결하기 위해서는 아래와 같은 추가적인 설정이 필요하다.
 
notion image
위와 같이 입력 받을 페이징 정보를 명시한 클래스를 작성한다. 그리고 Docket 객체를 만들면서 Pageable 대신 따로 작성한 클래스(MyPageable)를 사용하도록 설정해준다.
notion image
 
[Swagger] Pageable 객체 처리
이번 포스트에서는 Pageable 타입을 반환하는 Controller를 Swagger에서 제대로 표현해주지 못하는 문제의 해결책에 대해서 살펴보자. Controller 구성 JPA를 이용해서 모델단을 구성한 후 전체 목록을 반환하는 과정에서 페이징 처리를 위해 아래와 같이 Controller를 구성한 상태이다. @GetMapping public ResponseEntity > search(Pageable pageable) { log.debug("pageable: {}", pageable); return new ResponseEntity >(service.selectCustomer(pageable), HttpStatus.OK); } 아래와 같이 단위테스트를 통해 Controller의 동작을 점검해보자.
[Swagger] Pageable 객체 처리
https://goodteacher.tistory.com/508
[Swagger] Pageable 객체 처리
Swagger 2 에서 Pageable 이용하기
http://localhost:8080/stores/1/menus?page=1&size=3 의 조회결과는 아래와 같다. JpaRepository가 상속받고 있는 PagingAndSortRepository에서는 Pageable 구현 클래스를 인자로 받아 정렬, 페이징 처리를 쉽게 처리해 줍니다. 이 기능을 swagger를 이용해서 api를 사용해보고 싶을 겁니다. 그런데 두둥!! swagger에서 Pageable인자를 받는 api에서 page, size 가 아닌 pageNumber, pageSize 라는 이름으로 들어있어요. 그래서 실행시 에러가 납니다 😢 swagger에서 pageable 인자를 받고 싶다면 어떻게 해야할까요?
Swagger 2 에서 Pageable 이용하기
https://blog.jiniworld.me/20
Swagger 2 에서 Pageable 이용하기

NumberFormatException: For input string: ""

만약 이런 warning을 만난다면 @ApiModelProperty의 example에 값을 추가해주면 된다.
 
NumberFormatException: For input string: "" in Swagger (Solved) | Dariawan
In my previous article about Documenting Spring Boot REST API with Swagger, I mentioned about following "error" while running the program and/or accessing api-docs (or swagger-ui): 2020-05-02 21:25:56.584 WARN 15140 --- [nio-8080-exec-1] i.s.m.p.AbstractSerializableParameter : Illegal DefaultValue null for parameter type integer java.lang.NumberFormatException: For input string: "" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) ~[na:1.8.0_181] at java.lang.Long.parseLong(Long.java:601) ~[na:1.8.0_181] at java.lang.Long.valueOf(Long.java:803) ~[na:1.8.0_181] at io.swagger.models.parameters.AbstractSerializableParameter.getExample(AbstractSerializableParameter.java:412) ~[swagger-models-1.5.20.jar:1.5.20] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_181] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_181] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_181] at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_181] at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:688) [jackson-databind-2.10.2.jar:2.10.2] at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:722) [jackson-databind-2.10.2.jar:2.10.2] at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:166) [jackson-databind-2.10.2.jar:2.10.2] To be precise, this is not an error, its just a warning log message.
NumberFormatException: For input string: "" in Swagger (Solved) | Dariawan
https://www.dariawan.com/tutorials/rest/numberformatexception-for-input-string-in-swagger/
NumberFormatException: For input string: "" in Swagger (Solved) | Dariawan
 

Swagger에서 입력 쿼리 파라미터가 Pageable로 되어 있는 경우

위와 같은 설정을 추가했는데 아래 사진과 같은 문제를 겪을 수 있다.
notion image
notion image
아마 @RequestParam(required = false) 때문인거 같다. 해당 부분을 지워주니 아래와 같이 해결된 것을 확인할 수 있다.
notion image
 

AuthenticationPrincipal

인증 정보를 AuthenticationPrincipal 를 통해 전달 받는데 Swagger에서 쿼리 파라미터에 필요 없는 정보가 나오는 경우 아래와 같이 무시할 수 있도록 설정해주면 된다.
notion image
 
Swagger - API 문서 자동화
Swagger 는 annotation 기반의 REST API 문서를 만들어주는 프레임워크입니다. 간단하게 dependecy 를 추가하여 사용할 수 있습니다.
Swagger - API 문서 자동화
https://yoon0120.tistory.com/50
Swagger - API 문서 자동화