Skip to content

Conversation

@MuchanKim
Copy link
Collaborator

@MuchanKim MuchanKim commented Nov 5, 2025

📝 Summary

검색 API에 사용되는 데이터 모델을 정의하고 서비스를 제공하는 매니저 클래스를 구현했습니다.

🔨 What

API 서비스 매니저 구현!!!!

  • Generic 공통 요청 메서드로 API 호출 처리
  • 프로토콜 기반 응답 검증 (KakaoResponseMeta)
  • 좌표 → 주소 변환 API (fetchLocationFromCoord)
  • 키워드 → 장소 검색 API (fetchPlaceFromKeyword)
  • NetworkHeader로 헤더 관리 중앙화
  • 공통 디코더 프로퍼티 (snake_case 변환)

변경 후

  • 카카오 검색 API Swift 6 동시성 문제 해결 및 URL 조합 방식으로 리팩토링
  • Swift 6 동시성 문제 해결: Encodable 파라미터 인코딩 대신 URL 조합 방식으로 변경
  • URLBuilder 유틸리티 추가: Base URL과 쿼리 파라미터를 조합하는 재사용 유틸리티 생성
  • Request DTO 제거: KakaoCoordToLocationRequestDTO, KakaoKeywordToPlaceRequestDTO 삭제
  • Response DTO 개선: nonisolated 키워드 제거
  • KakaoSearchAPIManager 리팩토링: URLEncodedFormParameterEncoder 대신 URLBuilder로 완전한 URL 생성 후 요청
  • 변경 전: request(url, parameters: Encodable, encoder: ...)
  • 변경 후: URLBuilder.build()로 URL 생성 → request(fullURL)

👀 Review Notes

  • Request, Response 모델을 nonisolated로 선언하였는데 위험하다고 판단되면 피드백 남겨주십시오. -> 수정
  • 싱글톤으로 구현했습니다.
  • 테스트 코드 돌려주세욥!!

카카오톡 참고!

what?
키워드로 장소를 반환하는 API의 요청, 응답 DTO를 추가했습니다.
what?
- 좌표를 요청하여 주소를 응답받는 API의 요청, 구조 DTO를 추가하였습니다.
- nonisolted ㅠㅠ
what?
- config에 키를 추가했습니다. config.xcconfig는 별도로 보내드림!
- base가 되는 공통 헤더, api헤더, 공통 url 주소를 추가하였습니다.
- 에러는 별도로 폴더로 빼서 추가하였습니다.
what?
- Generic 공통 요청 메서드로 API 호출 처리
- 프로토콜 기반 응답 검증 (KakaoResponseMeta)
- 좌표 → 주소 변환 API (fetchLocationFromCoord)
- 키워드 → 장소 검색 API (fetchPlaceFromKeyword)
- NetworkHeader로 헤더 관리 중앙화
- 공통 디코더 프로퍼티 (snake_case 변환)
what?
- api 호출 결괏값을 출력하는 테스트 코드를 작성
- 좌표to주소, 키워드to장소 2개 테스트 코드 작성
@MuchanKim MuchanKim self-assigned this Nov 5, 2025
@MuchanKim MuchanKim added ✨ Feature 새로운 기능 구현 🥬 Moo 김무찬 바 ~ 보 labels Nov 5, 2025
What?
- 요청 방식에서 파라미터를 제거하고 URL+헤더로 요청함에 따라 Request DTO 제거
- Response 모델은 nonisolated를 제거하였습니다.
What?
- URL을 조합하기 위한 URL빌더를 만들었습니다.
- URLComponents를 사용해서 구현했습니다.

Why?
- 기존 방식의 Parameter가 Sendable 프로토콜 관련 오류가 발생하여 파라미터를 제거하고 URL을 조합하여 쓰는 방식으로 변경했습니다.
…odifications

What?
- url 빌더로 메서드 파라미터를 받아 url을 조합해서 request 하는 방식으로 변경했습니다.
Copy link
Collaborator

@YooGyeongMo YooGyeongMo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

p2. RequestDTO로 분리시켜서 하면 더 좋을듯합니다.

@MuchanKim MuchanKim merged commit ae0abc3 into main Nov 6, 2025
@MuchanKim MuchanKim deleted the feat/#48 branch November 18, 2025 20:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨ Feature 새로운 기능 구현 🥬 Moo 김무찬 바 ~ 보

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[✨ Feat] SearchAPI 서비스 로직 구현 및 데이터 모델 정의

5 participants