서론
앱을 개발할 때 서버와 API 통신을 자주 합니다.
API 통신 개발 과정에서 문제가 생겼을 때 디버깅을 위해 Postman, Swagger를 사용하기도 합니다.
Postman, Swagger도 좋은 방법이지만,
실제 내 앱이 어떤 요청과 응답을 주고 받는지 궁금할 때가 있습니다.
if let requestBody = urlRequest.httpBody,
let requestBodyString = String(data: requestBody, encoding: .utf8) {
print("[요청 데이터]\n\(requestBodyString)")
}
if let responseBody = try? encoder.encode(body),
let responseBodyString = String(data: responseBody, encoding: .utf8) {
print("[응답 데이터]\n\(responseBodyString)")
}
iOS에서는 Request Body Data와 Response Body Data를 인코딩, 디코딩한 뒤 String으로 변환하여 출력해야 하는데요.
와,,, 너무 귀찮습니다.
그리고 Run을 할 때마다 이전 요청과 응답이 사라지는 것도 불편합니다.
이렇게 실제 기기 또는 시뮬레이터의 http(s) 통신 과정을 보고 싶을 때 Proxyman이 유용합니다.
기기가 통신하는 과정을 이런식으로 편하게 볼 수 있어요!
Proxyman이 얼마나 유용한지 알아봤으니 설치 과정과 사용법을 알아보겠습니다.
Proxyman 설치
Proxyman은 공식 홈페이지에서 다운로드할 수 있습니다.
Postman은 사람이 날아가는 아이콘인데,
Proxyman은 우주복 헬멧 아이콘이네요 ㅎㅎ
지금보니 Xcode의 색상과 비슷하게도 보여요.
Proxyman 실행
Proxyman을 실행하면 Proxy Helper Tool을 설치하라고 나옵니다.
Install Helper Tool 버튼을 눌러 설치하면 돼요.
그럼 현재 맥북의 통신 상태가 표시됩니다.
iOS 실제 기기 연결
이제 iOS 실제 기기의 통신 과정을 살펴보겠습니다.
아이폰과 맥북의 와이파이를 똑같이 맞춰주시고 아래 과정을 진행해 주세요.
아이폰 프록시 구성
Proxyman의 Certificate - Install Certificate on iOS - Physical Devices를 선택합니다.
그럼 Proxyman이 제공하는 가이드 팝업이 표시됩니다.
사실 이거 그대로 진행하시면 돼요 ㅎ;
1번 과정인 Install Root Certificate 버튼을 눌러 맥북에 Certificate를 설치하시고,
아이폰 와이파이의 프록시 구성을 설정해줄거에요.
와이파이 정보 - 프록시 구성에 들어갑니다.
프록시 구성을 수동으로 설정하고,
Proxyman 가이드에 표시된 서버, 포트를 입력하고 저장하세요.
여기까지만 해도 Proxyman에 기기가 표시될거에요.
프로파일 다운로드
이어서 설정하겠습니다.
아이폰 사파리로 http://proxy.man/ssl에 접속하세요.
위 링크에 접속하면 프로파일을 다운로드합니다.
프로파일 설치
다운로드를 완료하면 아이폰 설정 - 일반 - VPN 및 기기 관리에 들어가세요.
그럼 다운로드된 프로파일에 Proxyman이 있을거에요.
Proxyman에 들어가서 설치 버튼을 누르면 프로파일 설치가 완료됩니다.
API 통신 과정 관찰하기
프로파일 설치가 완료되면 https API 통신 과정을 관찰할 수 있습니다.
Proxyman에 들어가서 아이폰 기기를 선택하고 원하는 도메인을 클릭하세요!
저는 모티메이트 앱의 API 통신 과정을 살펴봤습니다.
API URL, API Method, 통신 완료 여부, Status Code, 통신 시간, 소요 시간, 데이터 크기가 표시됩니다.
저는 요청, 응답 데이터도 좋지만, 저 소요 시간이 표시되는게 너무 좋더라고요.
매번 Swift 코드로 시간을 측정했는데 API 통신에 소요되는 시간을 더 정확하게 알 수 있어요.
저 통신 목록 중 하나를 선택하면 저희의 목표였던 JSON 데이터를 볼 수 있습니다.
1번 사진은 Response Body Data, 2번 사진은 Request Body Data에요.
둘 다 너무 편하게 볼 수 있었습니다.
시뮬레이터 연결
시뮬레이터 연결은 실제 기기보다 훨씬 간단합니다.
Proxyman의 Certificate - Install Certificate on iOS - Simulators를 선택하세요.
시뮬레이터를 킨 상태라면 Proxyman이 시뮬레이터를 감지할 거에요.
2번 과정에서 에러가 발생한다면 Xcode - Settings - Locations - Command Line Tools를 선택하세요.
UI 상으로 이미 선택되어 있어도 꼭 Xcode <버전> 메뉴를 클릭하세요. 그래야 설정이 완료됩니다!
그 뒤에 Reboot을 해주면 시뮬레이터 연결 완료입니다.
시뮬레이터는 Client로 앱 자체가 표시된다는 점이 특징이에요.
다른 차이점은 없습니다!
마무리
클라이언트의 API 통신 과정을 볼 수 있는 Proxyman이었습니다.
이제 Swift 코드로 직접 Data를 인코딩, 디코딩하지 않아도 돼요 ㅎㅎ
소요 시간도 직접 측정하지 않아도 되고요!
꼭 사용해보셨으면 좋겠습니다 :)
설치 과정에서 궁금하신 점은 댓글로 남겨주세요.
감사합니다.
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.