swift API통신을 연습하기 위한 단계적 학습과정

임혜정·2024년 7월 13일
0
post-custom-banner

api관련 실습과 json파싱에 대해 몇 번 클론 코딩을 해본 것 같은데 볼 때마다 낯설어서 조금 더 빈도수를 늘려서 반복 학습 해야할 것 같다.

1. API가 뭔지 알기

  • API(Application Programming Interface), 소프트웨어나 서버와 통신하기 위해 사용하는 규칙과 도구모음.
  • 리모콘에 비유하면 리모콘의 버튼들은 TV를 컨트롤하기 위한 API이다
  • 음량을 크게하기위해 +버튼을 누르는 것은 API에게 요청을 한 것 -> API Request
  • 음량이 커진 것은 API로 부터 요청한 결과를 받은 것 -> API Response

2. 인코딩과 디코딩 알기

  • 인코딩: 데이터를 특정 형식으로 변환하는 것 (json형식을 주로)
  • 디코딩: json같은 형식으로 변환된 데이터를 다시 원본으로 변환
  • codable프로토콜을 채택한다는 것은 인코딩/디코딩이 될 수 있음을 의미하고 codable프로토콜을 열어보면 Decodable, Encodable로 구현되어 있다.

3. REST API(Representational State Transfer) 뭔지 알기

  • HTTP Method (GET, POST, PUT, DELETE 등) 를 통해 해당 자원을 어떻게 할 것인지 CRUD 를 결정한다.
    • GET: 자원을 조회합니다.
    • POST: 자원을 생성합니다.
    • PUT: 자원을 업데이트합니다.
    • DELETE: 자원을 삭제합니다.
  • REST API 도 결국 API 이기 때문에, 데이터를 주고 받는 형식, 창구라고 생각 할 수 있음.

4. Swift에서 API호출을 위해 제공하는 기본 도구 살펴보기

  • URLSession : swift에서 api통신을 할 때 주로 사용하는 클래스
  • url : api의 주소
  • URLRequest : api요청을 만들 때 사용하는 객체

1단계 : url만들기

// API의 주소를 URL 객체로 만들기
let urlString = "https://api.example.com/data"
guard let url = URL(string: urlString) else {
    print("잘못된 URL입니다.")
    return
}

2단계 : urlsession을 사용해서 요청 보내기

// URLSession을 사용해 요청을 만들고
let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
    // 에러가 있는지 확인합니다.
    if let error = error {
        print("에러 발생: \(error.localizedDescription)")
        return
    }
    
    // 데이터를 받아왔는지 확인.
    guard let data = data else {
        print("데이터를 받지 못했습니다.")
        return
    }
    
    // 데이터를 출력
    if let resultString = String(data: data, encoding: .utf8) {
        print("받은 데이터: \(resultString)")
    }
}

// 요청을 시작합니다.
task.resume()

정리

  • url: api 주소를 설정하는 방법
  • urlSession: 요청을 보내고 응답받는 법
  • dataTask:요청을 보내는 실제 작업
  • 클로저: 요청 후 응답을 처리하는 방법
profile
오늘 배운걸 까먹었을 미래의 나에게..⭐️
post-custom-banner

0개의 댓글