Nestia Guide Documents - Swagger to NestJS
swagger.json 파일 읽고 분석해서
NestJS 프로젝트 생성도 가능하고 (별로 안 중요)
E2E 테스트 프로그램도 자동으로 만들어주고 (그닥 안 중요)
SDK나 Mockup 시뮬레이터도 만들어주고 (이건 중요)
해주는 프로그램 만들었거든?
대충 위 용어 중 SDK는 API 스펙 따라 fetch 함수 모아둔거고
Mockup Simulator는 프론트에서 백엔드 API
목업 시뮬레이션 해 볼 수 있는 놈임 ㅇㅇ
각각 openapi generator나 msw와 비슷한데
그거보다 조금 더 편하고 더 자동화되었다고 이해하면 됨
그래도 이해 안가면 아래 링크 누르고 gif 짤이랑 예제코드 보면 됨 ㅇㅇ
- SDK: Nestia Guide Documents - SDK Library
- Mockup Simulator: Nestia Guide Documents - Mockup Simulator
그리고 이거 만든 김에 슬슬 주변에 권유를 해봤음
Swagger 파일 쑤시면 편리한거 빌드된다면서 권하는데
주변 지인들 회사 중에 swagger 빌드 불가능한 곳이 워낙 많아서 충격이더라
API 문서 노션/슬랙으로 공유하는 놈들은 양반이고
그마저도 없어서 즉석에서 야부리 기반 API 공유하는 애들도 있고 그러함
이게 누구나 이름만 들어도 알법한 그런 회사들조차
누군가가 DTO 대신 response 타입에 Map<string, Object> 박아버려서
스웨거 빌드 불가능한 곳도 그렇게 많더라
뭔가 조선 백엔드의 매운 맛을 본 거 같아서 씁쓸하더라
p.s) RestDoc 이거 뭐 테스트 짜는데 유리하고 나발이고
웨 API 문서 이딴거 의존해서 손으로 한땀 한땀 짜가며
만들어야 했는지 이해 못했는데 이번에 제대로 깨닫게 됨 ㄷㄷㄷ
요즘 라이브러리들 걍 알아서 swagger만들어주지 않나
ㅇㅇ 나도 그렇게 생각하고 진행했지
근데 swagger generator라는게 상식적으로 만들어진 API 한정이지, Map 이딴거 받고 리턴하는 컨트롤러는 분석 못하더라고
님 swagger 사용중인사람인데요. MultipartForm data 전송할때 객체와 파일을 동시에 전송할건데 객체는 json으로, 파일은 multipart로 보내려고 하는데 아무리 옵션을 건드려도 swagger-ui에서 json으로 전송이 안되더라구요.. postman에서는 타입 지정해서 보낼수 있던데 swagger는 불가능한건가요?
근데 도 swagger guthub들어가니까 최신버전에서는 media type 지정할수있게 되었다는데.. openapi에서 추상화시킨 라이브러리가 아직 최신 swagger를 사용하지 않아서 그런거겠죠?
openapi generator 코드 거지같이 만들어줘서 그런거고, 원래 swagger-ui는 되지 않음?
multipart/form-data 중 변수 하나 지정해서 거기에 json-string 쑤실건데, 그게 웨 안 됨?
아 swagger-ui도 openapi 라이브러리에 있는거로 사용중이에요
컨트롤러에서 변수 타입을 지정해놔도 ui에서 curl 날리는거 보니까 type 빼놓고 보냄.. swagger 공식 문서를 보면서 수정해도 그러는거보면 openapi가 문제인지 제가 실수한건지
https://springdoc.org/v1/
라이브러리가
얘 아니면 springfox밖에 없던데
자바 안해서 모름 ㅈㅅ ㅇㅂㅇ
해당 댓글은 삭제되었습니다.
DTO 안쓰는건 생각도 못하겠음 이젠
검색해서 뒤져봤는데 결국 openapi 최신버전은 swagger-ui 4.18버전 사용중인데, swagger-ui 5버전부터 MultipartForm으로 서버에서 받을때 swagger-ui에서 파일말고 객체 타입을 (type:application/json;) 별도 지정해줄수 있게 지정가능한거같음.
swagger-ui에서 아무리 지랄해도 MultipartForm으로 보낼때 객체만 json 타입지정이 안되니까 415 에러가 나옴(octetstream 컨버팅안된다고) 그래서 그냥 MessageConverter에 octet-stream을 json으로 컨버팅하게해서 야매로 해결함. 프로덕션 적용하면 문제가 생길수 있으니까 swagger config에 넣음
기존에도 그냥 js에서 그냥 타입지정해서 보내면 문제없는거긴한데 swagger-ui에서 타입지정이 안되어서 테스트가 안되니까 이렇게 해결했음
openapi-generator 적용하려고 알아보고있는데 좀 현타오네
Map<String, Object>는 그게 시발 사람새끼냐 ㅋㅋㅋㅋㅋㅋㅋ
나도 그렇게 생각했는데 읍읍
ㅋㅋㅋ.
그래프큐엘 코드제네레이터 쓰시는건 어떠신가요?
난 json 코드 더블 쿼츠 한땀한땀 다 붙여서 응답 코드 만드는거 봤는데 재밌더라
나도봄 ㅋㅋ 걍 jsondecode함수로 바꿔놈