ZinnaChoi / Study-Management

온라인 스터디 관리 시스템: 부재 일정 캘린더, 토론 게시판 및 알림 기능 제공
8 stars 0 forks source link

[Fix Request] 스터디 등록 API swagger Input 변경 요청 #40

Closed ZinnaChoi closed 7 months ago

ZinnaChoi commented 8 months ago

안녕하세요 @MeMyself-And-I !

Swagger에서 스터디 등록 API의 input이 사용하기 어려운 것 같아요! @ModelAttribute 어노테이션을 사용해서 로고 이미지 뿐만 아니라 다른 text 필드들도 swagger 상에서 input으로 받으면 어떨까요?

image

일정에 무리가 가지 않는다면 수정 부탁드립니다! 감사합니다 :)

MeMyself-And-I commented 8 months ago

스웨거 UI에서 파일 + DTO 전송 방법 관련해서 수정이 꽤 오래 걸릴거 같아요 저번에도 계속 해보려고 했는데 쉽게 되질 않네요

정리하면

  1. 오늘 전달 받은 예제 코드로 진행해보려 했으나 제 요청 객체에는 List와 같은 형태의 참조형 객체를 사용중 -> spring doc에서 나온 내용으로 @ModelAttribute 어노테이션은 List와 같은 java 컬렉션 또는 참조형 객체는 지원해주지 않는다. -> 만약 리스트를 사용하지 않는 요청 객체라면 가능할 것 같다. https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/bind/annotation/ModelAttribute.html

  2. 지금 스터디 등록 API에 적용된 방법은 레퍼런스 찾고 찾다가 멀티파트 파일 + list 사용하는 방법 찾아서 적용함 https://github.com/springdoc/springdoc-openapi/issues/820

@ModelAttribute를 사용하지 않고 적용하는 방법을 찾아야 하는데 지금 레퍼런스도 잘 없고 1번 사항에 관한 레퍼런스로는 사람들 전부 swagger ui가 아닌 postman으로 테스트 하더라구요 swagger ui에서 요청을 알맞게 변환하지 못하는 것 같아요

찾아보고 적용하는데 시간이 꽤 걸릴 것 같습니다. 저희가 swagger를 사용하려고 한다면 불편하더라도 우선 지금 스터디 등록 API 방식대로 객체에 대해서도 json 파일 업로드를 해야할 것 같습니다.

진짜 간단히 문제점 정리하자면

  1. 예희씨가 준 코드는 정상 동작하지만,
  2. 제가 적용하려고 하는 DTO의 필드 중에 List가 있다
  3. @ModelAttribute는 참조형, java 컬렉션 객체List를 지원해주지 않는다.
  4. 따라서 현재 스웨거에서 적용한 방법이 스터디 등록 API이다.

방법이 있나 없나 더 찾아봐야 하고, 시간이 꽤 걸릴 거 같아서 API 개발 마무리하고 적용해야할 것 같습니다

ZinnaChoi commented 7 months ago

close 하도록 하겠습니다!