[swift] SwiftGen을 활용한 네트워크 통신 처리

이번 포스트에서는 SwiftGen이라는 유용한 도구를 활용하여 네트워크 통신 처리를 어떻게 개선할 수 있는지 살펴보겠습니다.

1. SwiftGen 소개

SwiftGen은 Xcode 프로젝트에서 리소스들을 관리하는 일을 효율적으로 도와주는 도구입니다. 이를 통해 이미지, 스토리보드, 색상, 폰트 등 리소스 관리를 손쉽게 할 수 있으며, 정적인 리소스들을 타이핑 오류 없이 쉽게 사용할 수 있습니다.

2. 네트워크 통신 처리 개선

기존에는 네트워크 통신을 처리하기 위해 매번 URL 문자열을 사용하고, HTTP 메소드, 헤더, 파라미터 등을 일일이 작성해야 했습니다. 이러한 방식은 오타나 실수가 발생할 수 있고, 유지 보수에도 어려움을 겪을 수 있습니다.

SwiftGen을 사용하면 네트워크 관련 리소스들을 따로 파일로 정의하고, 생성된 코드를 통해 쉽게 사용할 수 있습니다.

2.1. URL 정의

먼저, 네트워크 요청에 사용할 URL을 정의하는 과정입니다. SwiftGen을 사용하면 .strings 파일에 URL을 명시하고, 코드를 생성하여 사용할 수 있습니다.

// Resources/URLs.strings

network.baseURL = "http://api.example.com"
network.endpoint.getUsers = "/users"

위와 같이 정의한 후에 SwiftGen을 실행하면, 생성된 코드에서는 다음과 같이 URL을 사용할 수 있습니다.

let baseURL = Network.url.baseURL
let endpoint = Network.url.endpoint.getUsers

let url = URL(string: "\(baseURL)\(endpoint)")

2.2. HTTP 메소드, 헤더, 파라미터 정의

네트워크 요청에 사용되는 HTTP 메소드, 헤더, 파라미터 등도 동일한 방식으로 정의할 수 있습니다. 예를 들어, .strings 파일에 다음과 같이 정의합니다.

// Resources/Network.strings

network.httpMethod.GET = "GET"
network.httpMethod.POST = "POST"

network.header.token = "Authorization-Token"
network.parameter.username = "username"
network.parameter.password = "password"

생성된 코드에서는 다음과 같이 사용할 수 있습니다.

let httpMethod = Network.httpMethod.GET
let tokenHeader = Network.header.token
let usernameParam = Network.parameter.username
let passwordParam = Network.parameter.password

3. 결론

SwiftGen을 활용하면 네트워크 통신 처리를 더욱 효율적으로 개선할 수 있습니다. URL, HTTP 메소드, 헤더, 파라미터 등을 일일이 작성하는 것이 아니라 리소스 파일에 정의하고, 생성된 코드를 사용하여 일관성 있고 실수 없이 네트워크 요청을 처리할 수 있습니다. 이를 통해 개발자들은 코드 작성에 더 많은 시간을 투자할 수 있고, 유지 보수도 더욱 쉬워집니다.

참고: SwiftGen GitHub 저장소