[ swift ] api 왜 나는 어려울까.

sonny·2024년 12월 21일
2

TIL

목록 보기
78/133

API 공부를 어렵게 느끼는 나 같은 사람들을 위해

API(Application Programming Interface)는 현대 개발에서 없어서는 안 될 중요한 개념인건 다들 알고 있을 것이다.

하지만 처음 공부를 시작하면 생소한 용어, 비동기 작업, 네트워크 구조 등 많은 장애물에 부딪히기 마련이고,

나 또한 API를 배우는 과정이지만 많은 어려움을 느끼고 현재도 마냥 쉽지는 않다.

그래서 비슷한 어려움을 겪는 사람들을 위해 그저 작성한 것일 뿐이니 편하게 봐줬으면 한다.


왜 API 공부가 어렵게 느껴질까?

  1. 추상적인 개념

    • API는 다른 시스템 간의 연결을 돕는 역할을 하는데, 이 과정이 눈에 보이지 않다 보니 초반에는 추상적으로 느껴졌다.
  2. 기초 지식 부족

    • HTTP 메서드(GET, POST 등), 상태 코드(200, 404 등), JSON 데이터 포맷 등 API와 관련된 기본 지식을 알고 있어야 이해가 쉽다는 걸 알았다.
  3. 비동기 작업의 복잡성

    • API 호출은 보통 비동기로 처리되는데, 클로저, 콜백, 또는 async/await 같은 개념을 다룰 줄 알아야 했다.
  4. 단계별 접근의 부족

    • 요청을 보내고, 데이터를 받는 과정에서 이걸 파싱한 뒤 UI에 표시하는 전체 과정이 한 번에 이해하기에는 너어무 복잡했다.

그렇다면 어떻게 공부해야 할까?

  1. 작은 목표부터 시작해보자

    • 처음부터 복잡한 API를 다루지 말고, 간단한 JSON 데이터를 가져오는 예제부터 시작하는 거다.

      https://jsonplaceholder.typicode.com/posts는 실제 데이터가 아니라 테스트를 위해 제공되는 샘플 API이다.
      JSONPlaceholder는 가상 데이터를 제공하는데 그 곳에서 가져온 데이터는 서버에 저장되지 않는다.
      따라서 데이터를 POST 요청으로 추가하거나 수정하더라도 다시 요청하면 초기 상태로 돌아온다.

예를 들면 이 URL로 GET 요청을 보내면 아래와 같은 데이터가 반환되어야 한다.

[
  {
    "userId": 1,
    "id": 1,
    "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
    "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
  },
  {
    "userId": 1,
    "id": 2,
    "title": "qui est esse",
    "body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla"
  }
  // 아래에 더 많은 항목이 있다
]

확인 방법

Postman 또는 cURL 사용

  • Postman에서 URL을 입력하고 GET 요청을 보내면 위와 같은 데이터를 받을 수 있다.

브라우저로 확인

  • 위 URL을 브라우저에 입력하면 JSON 데이터가 그대로 표시된다. (혹시나 브라우저에 확장 프로그램이 설치된 경우 형식이 다를 수 있다.)

Swift로 호출해보자

먼저 위에 데이터를 Swift 구조체로 변환하기 위해 아래와 같이 정의해보자.

struct Post: Codable {
 let userId: Int
 let id: Int
 let title: String
 let body: String
}

그리고 URLSession을 사용해 데이터를 가져오는 간단한 예제를 작성해보는 것이다.

import Foundation

class APIService {
    func fetchPosts(completion: @escaping (Result<[Post], Error>) -> Void) {
        let url = URL(string: "https://jsonplaceholder.typicode.com/posts")!
        let task = URLSession.shared.dataTask(with: url) { data, response, error in
            if let error = error {
                completion(.failure(error))
                return
            }
            guard let data = data else {
                let error = NSError(domain: "", code: -1, userInfo: [NSLocalizedDescriptionKey: "No data received"])
                completion(.failure(error))
                return
            }
            do {
                let posts = try JSONDecoder().decode([Post].self, from: data)
                completion(.success(posts))
            } catch {
                completion(.failure(error))
            }
        }
        task.resume()
    }
}

테이블뷰를 이용해 타이틀을 가져와봤다


  1. 기본을 이해하자

    • HTTP와 JSON 포맷의 기본 개념을 먼저 공부해보자. 이걸 이해하면 API의 구조를 보는 눈이 생길 수 있다.
    • 간단한 HTTP 요청을 해보자. “GET은 데이터를 가져오는 것”, “POST는 데이터를 보내는 것” 정도로 시작하면 충분할 것 같다.
  1. 단계를 나눠보자

    • API를 다루는 과정을 다음과 같이 단계별로 연습하는 것이다.

      1. 올바른 URL로 요청을 보내보기.
      2. 응답 데이터를 받아 JSON 형식으로 출력해보기.
      3. JSON 데이터를 Swift 구조체로 파싱해보기.
      4. 파싱된 데이터를 UI에 표시하기.
  2. 디버깅을 두려워하지 말자..!

    • API 호출은 실패할 때가 더 많다고 한다. 네트워크 상태, URL 오타, 응답 형식 등을 확인하며 디버깅하는 것도 학습의 일부라고 생각하자.
    • 실패 메시지에서 힌트를 찾고, 이걸 해결하는 과정을 즐기자. 즐기는 자를 이길 수 없다.
  3. Swift로 비동기 작업 연습하기

    • URLSession을 사용하여 API 요청을 보내고 데이터를 처리하는 코드를 작성해보자.
      익숙해지면 AlamofireMoya 같은 라이브러리를 사용해 작업을 더 효율적으로 처리할 수 있다.

음...

API 공부는 처음에는 어렵지만, 한 단계씩 나아가다 보면 어느새 익숙해질 것이라고 생각한다.
나도 처음에는 너무 어려워서.. 공부하기 싫어했던 적이 있었는데, 하나씩 연습해보면 어느새 점점 눈에 보이기 시작한다.

천천히, 그리고 꾸준히. 완벽하지 않아도 괜찮다.

profile
iOS 좋아. swift 좋아.

1개의 댓글

comment-user-thumbnail
2024년 12월 22일

차근차근 공부하는 모습이 멋져요

답글 달기

관련 채용 정보