[Refactor] #207 - 서버 통신 함수 리팩토링 #222
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
🌱 작업한 내용
사용 방법
현재는 Proveiders를 타입 프로퍼티로 선언하여 사용해주고 있는데
제가 만든 NetworkProvider 내부에서 MoyaProvider의 request 함수를 호출하고 있으므로, 아래와 같이 선언해주면 됩니다
그 후 TargetType 프로토콜을 채택하는 provider(우리 플젝에서는 Router 친구들)의 case와 (ex .getLocationTmapAddress )
decoding을 위한 dto, viewController를 전달해주면 됩니다.
아래 코드는 같은 서버 통신 로직인데 사용 전과 후의 코드입니다
사용 전
사용 후
코드 설명
위의 부분이 api 연결하는 함수마다 써있는걸 발견했고,
서버 통신에 성공해서 데이터를 활용하는 부분에만 차이가 있음을 확인했습니다.
그래서 위의 중복되는 부분들을 하나로 묶어주는 함수를 작성했고,
기존 MoyaProvider의 request 함수는 아래의 리턴 타입을 escaping으로 전달해주는데
error에 대한 분기처리가 api 함수마다 동일하므로, error 분기처리는 제가 작성한 request 함수에서 진행하고‼️ ‼️ ‼️ ‼️
아래의 리턴타입(ResponseResult)을 새롭게 만들어주었습니다.
그래서 서버 통신에 성공한 경우만 실제 뷰컨에서 처리하도록
아래는 핵심이 되는 함수입니다
viewController를 매개변수로 전달해주는 이유는,
서버 통신 실패시 토스트 메세지를 띄워줘야하는데 이때 해당 뷰컨에 대한 정보가 있어야 뷰를 붙여줄 수 있기 때문입니다
그리고 서버 연결에 실패한 경우 에러메세지를 출력해주는 코드가 필요함을 느껴서 이 부분도 추가해주었습니다 !
궁금한 점, 수정되었으면 하는 부분 자유롭게 리뷰 남겨주시면 감사하겠습니다. 꾸벅 꾸벅
📮 관련 이슈