Moya+RxSwift 를 사용해서 API클래스를 만들어보려고했는데 기능 구현이 우선이라고 생각이 들어서 우선, 뷰컨트롤러에서 RxSwift 를 사용해서 서버통신을 구현하였습니다.
(2023.10.04 최신화)
API 클래스를 구현해보았습니당 success 와 failure 를 다룰 수 있는 Single 을 사용하였습니다
NetworkResult2 데이터 모델을 만들어서 제네릭을 성공 시 데이터 결과에만 사용하였습니다. 이전에는 에러 메시지도 넘기기위해서 사용하는 곳에서까지 에러 메시지인지 데이터 결과인지 몰라서 Any 로 전달되었습니다. NetworkResult2 로 데이터 결과만 제네릭을 사용하였고, 뷰 컨트롤러에서는(서버통신 결과를 사용하는 곳) 데이터 모델을 캐스팅하는 번거로움이 사라졌습니다.
API 클래스의 receivedTagFetch() 메소드를 살표보시면 되겠습니당
collection view 에 대한 설정과 cell 설정도 하였습니다.(#607)(준쌤! 셀 사용하시면 될 듯 합디다!)
🚨 참고사항
1
태그 삭제 API 에 대해서 단일 태그에 대한 삭제로 구현되어있는데 이를 클라에서 처리할 때 삭제할 태그의 개수만큼 api 를 호출한다는 것이 비효율적인 것도 같아서 다수의 정보를 보내면 어떨까 생각해봤어여
그런데, DELETE Restful api 방식이 request body가 없기 때문에 query string 방식으로 api 가 구현되었던 같습니당. 이렇게 되면 클라에서 여러 요청을 한번에 보내거나 이를 연결해서 보내면 꽤나 시간이 걸릴것도 같고 그렇습니당
그래서 DELETE 방식이 어울리는지! 현업에서는 어떻게 사용하는지 등 여쭈어본 상태에요! 결론나면 이슈를 새로 만들어서 진행하겠습니다.
(2023.10.04 최신화)
이는 POST 방식으로 변경하여 request body 를 사용하기로 하였습니다. DELETE 도 request body 를 상요할 수 있지만 비추천한다고 하였습니다.
2
태그를 선택했을 때와 선택 해재됐을 때(셀 선택 여부) indexPathsForSelectedItems 사용했는데 겪었던 트러블 슈팅을 공유해드립니당!
선택하지 않았을 때 indexPathsForSelectedItems 는 nil, 모두 선택 해제 후에는 빈 배열을 반환하면서 생겼던 트러블 슈팅이었습니다.
🌴 PR 요약
🌱 작업한 브랜치
609
🌱 작업한 내용
Any
로 전달되었습니다. NetworkResult2 로 데이터 결과만 제네릭을 사용하였고, 뷰 컨트롤러에서는(서버통신 결과를 사용하는 곳) 데이터 모델을 캐스팅하는 번거로움이 사라졌습니다.🚨 참고사항
1
DELETE
Restful api 방식이 request body가 없기 때문에 query string 방식으로 api 가 구현되었던 같습니당. 이렇게 되면 클라에서 여러 요청을 한번에 보내거나 이를 연결해서 보내면 꽤나 시간이 걸릴것도 같고 그렇습니당DELETE
방식이 어울리는지! 현업에서는 어떻게 사용하는지 등 여쭈어본 상태에요! 결론나면 이슈를 새로 만들어서 진행하겠습니다.(2023.10.04 최신화)
POST
방식으로 변경하여 request body 를 사용하기로 하였습니다.DELETE
도 request body 를 상요할 수 있지만 비추천한다고 하였습니다.2
indexPathsForSelectedItems
사용했는데 겪었던 트러블 슈팅을 공유해드립니당! 선택하지 않았을 때indexPathsForSelectedItems
는nil
, 모두 선택 해제 후에는 빈 배열을 반환하면서 생겼던 트러블 슈팅이었습니다.📸 스크린샷
📮 관련 이슈