카테고리 없음

iOS프로그래밍실무 (05.04)

k0223 2025. 5. 4. 18:31

iOS에서 Open API 활용하기: RESTful, JSON, 영화진흥위원회 API 예제

이번 글에서는 iOS 앱 개발 실습 중 Open API를 활용하여 데이터를 가져오는 과정을 소개드리겠습니다.
특히 영화진흥위원회의 공개된 박스오피스 API를 활용하여, JSON 데이터 처리 및 RESTful 설계에 대해 설명드립니다.

 

RESTful API란? 

REST (REpresentational State Transfer)는 HTTP를 기반으로 데이터를 주고받기 위한 아키텍처 스타일입니다.
REST 원칙을 잘 지켜 설계된 API를 RESTful API라고 부릅니다.

RESTful API 설계 시 URI에는 동작이 아닌 자원(Resource) 중심으로 구성하고, 동작은 HTTP 메서드로 구분합니다.

HTTP 메서드 정리

RESTful API 설계 시 URI에는 동작이 아닌 자원(Resource) 중심으로 구성하고, 동작은 HTTP 메서드로 구분합니다.

JSON이란?

JSON (JavaScript Object Notation)은 사람이 읽기 쉽고, 기계가 처리하기 용이한 데이터 포맷입니다.

 

영화진흥위원회 Open API 실습 

 

 

http://kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchDailyBoxOfficeList.json?key=82ca741a2844c5c180a208137bb92bd7&targetDt=20120101

응답 예시 둘중하나를 선택하여 들어간뒤 키값을 자신이 발급받은 키값으로 변경하면 됩니다.

공공 데이터 API 예시 (활용 가능)

 

https://app.quicktype.io/

 

Instantly parse JSON in any language | quicktype

 

app.quicktype.io

SON 데이터를 다양한 프로그래밍 언어의 코드로 자동 변환해주는 도구입니다. JSON, JSON Schema, TypeScript, GraphQL 등의 입력을 기반으로 C#, Swift, TypeScript, Go, Python, Java, Kotlin, Rust, C++, Objective-C 등 다양한 언어의 타입 정의 및 직렬화/역직렬화 코드를 생성할 수 있습니다.

네트워킹 기본 구성

Open API로부터 JSON 데이터를 가져오기 위해 URL, URLSession, dataTask, resume()을 사용합니다.

 

 

1 급 객체 (first class object) 1 급 시민 (first class citizen) 

// C 언어
int add(int x, int y) {
    return x + y;
}
add(10, 20);
// Swift
func add(x: Int, y: Int) -> Int {
    return x + y
}
add(x: 10, y: 20)

내부 매개변수(parameter name) 이름vs 외부 매개변수(argument label) 이름

Swift 함수 패턴

함수명이 궁금할 때: #function 리터럴

Swift에서는 함수 내부에서 #function 리터럴을 사용하여 현재 실행 중인 함수의 이름을 문자열로 확인할 수 있습니다.

https://docs.swift.org/swift-book/documentation/the-swift-programming-language/expressions

 

Documentation

 

docs.swift.org

 

func add(first x: Int, second y: Int) -> Int {
    print(#function)  // 출력: add(first:second:)
    return x + y
}

print(add(first: 10, second: 20))

위 코드에서 #function은 문자열 "add(first:second:)"를 출력합니다.
즉, 함수 이름과 외부 매개변수명을 포함한 전체 함수 서명을 출력하게 됩니다.

Swift의 함수는 1급 객체입니다.

Swift에서는 함수를 변수처럼 저장하거나 인자로 전달할 수 있습니다.