Swagger로 API 문서 자동화
Swagger 적용 방법
- 서론) swagger 적용은 무지무지 간단하다
- 본론) 단계별로 적겠다
- springdoc-openapi-ui 의존성 설치 (build.gradle)
- application.yml 설정 추가
- SwaggerConfig 파일 생성
- controller 별로
@tag,@operation적용
- 결론)
- swagger 초간단 설정이 끝났다. 실행 후 http://localhost:8080/swagger-ui.html 로 접속하면 된다. 401이 뜬다면, security 단에서 해당 엔드포인트를 permitAll로 허용해주자.
- 적용은 쉽게 했지만, 내가 원하는 대로 문서가 잘 뽑히진 않았다.
- 그 이유는,,,, 레거시 코드 때문,,,,
- 스웨거가 인식할 수 없는 부분들이 많아서 RequestBody인데 RequestParam으로 뜬다던가,,, 하는 요상한 것들이 많았따..
- 이건 결국 코드가 컨벤셔널 하지 않아서 그런 거 같다. 어느 정도 규격을 맞춰주는 작업이 필요하다 절실히 느꼈다.
- 참고)
Swagger 적용하며 만난 자잘한 이슈
- Swagger로 제네릭 타입 감지
- 반환 타입에 명시 해주어야 함. → Result (x) , Result<MemberResponseDto> (o)
return new Result<>(agents);- 제네릭(Generic)을 사용하여
Result클래스의 생성자를 호출하는데, agents변수의 타입이Result클래스의 타입 매개변수와 일치하도록 추론- 다이아몬드 문법으로 제네릭 타입을 더 간결하게 작성할 수 있도록 도와줌
agents의 실제 타입은 컴파일러가 타입 추론을 통해 결정함return new Result(agents);- 명시적으로 제네릭을 사용하지 않고
Result클래스의 생성자를 호출 - 컴파일러는
agents의 타입에 대한 제네릭 정보를 사용하지 않고 그냥agents를Result생성자에 전달함
잠깐 보고 가는 제네릭 두 가지 방식 : 난 첫 번째 방식이 더 좋은 거 같음. 타입 검사가 되어서
- Swagger https cors
- Swagger애서 api 테스트를 하려 할 때 계속해서 CORS 에러가 났다
- 직접 url을 명시해줘서 해결해줬다. 요렇게 써두면 swagger ui에서 url을 선택할 수 있다.
- 참고
- 이번 swagger 적용 시 반영 안해준 친구들 → 추후 추가해줄 예정
- 사실 우리팀은 restDocs로 곧 갈아탈 거라,,,, swagger에 그렇게 힘을 들이진 않기로 했다,,, 그래서 detail한 부분은 조금,,, 놓아줬다,,, 완벽히 하고 싶은 분들은 아래 키워드들도 찾아보고 반영해주자


.png?table=block&id=69a75341-7f3f-45da-a1b2-9481e41df05a&cache=v2)