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 실습
- API 사이트: https://www.kobis.or.kr/kobisopenapi
- 회원가입 후 인증키(API Key) 발급 필요
- 요청 방식: GET
- 응답 포맷: XML 또는 JSON 선택 가능
http://kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchDailyBoxOfficeList.json?key=82ca741a2844c5c180a208137bb92bd7&targetDt=20120101
응답 예시 둘중하나를 선택하여 들어간뒤 키값을 자신이 발급받은 키값으로 변경하면 됩니다.
공공 데이터 API 예시 (활용 가능)
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에서는 함수를 변수처럼 저장하거나 인자로 전달할 수 있습니다.