-
[뉴스어플 정리] 1. NewsAPI 사용하기, 모델만들기iOS/뉴스어플(RxSwift) 2021. 5. 24. 20:11
News API – Search News and Blog Articles on the Web
Get JSON search results for global news articles in real-time with our free News API.
newsapi.org
뉴스들을 가져오기 위해 NewsAPI를 이용하려고 한다.
Get API Key를 누르면 가입하라고 나오는데 나는 그냥 가입했다.


가입하고 홈화면에서 맨 밑으로 내리면 왼쪽 이미지처럼 항목들이 모여있다.
여기에서 맨 왼쪽의 News API에서 News sources에 들어간다.
들어가면 오른쪽 이미지처럼 국기들이 모여있는데 나는 한국뉴스 데이터가 필요하므로 South Korea를 클릭해 들어간다.
들어가면 https://newsapi.org/v2/top-headlines?country=kr 로 시작하는 apikey를 얻을 수 있다.
JSON API는 다음과 같이 만들어져있다.
1. article의 배열인 articles가 있다.
2. article은 source, author, title, description, url, urlToImage, publishedAt, content를 가지고있다.
3. article의 source는 id와 name을 가지고 있다.
따라서 아래처럼 모델을 만든다.
import Foundation struct APIResponse: Codable { let articles: [Article] } struct Article: Codable { let source: Source? let author: String? let title: String? let description: String? let url: String? let urlToImage: String? let publishedAt: String? } struct Source: Codable { let name: String? }1. APIResponse 구조체는 articles를 가지고 있으며 [Article]형이다.
2. Article 구조체는 source, author, title, description, url, urlToImage, publishedAt을 가지고 있다. content는 안써서 안만듬.
3. Article의 Source 구조체는 name을 가지고있다. id는 안써서 안만듬.
위 구조체들을 각각 Codable을 채택해주고 JSONDecoder로 APIResponse형으로 decode해주면
APIResponse의 articles에 뉴스데이터들이 들어간다.
옵셔널로 만든 이유는 API에서 아무것도 없는 경우가 있어서 nil이 들어갈 필요가 있기 때문이다.
API를 보고 거기에 맞춰서 Codable을 채택한 구조체를 만들면 JSONDecoder가 여기에 맞게 decode해준다.
단어장 어플 만들때는 이렇게까지 되는 줄은 몰랐는데 이번에 알게됐다.
'iOS > 뉴스어플(RxSwift)' 카테고리의 다른 글
[뉴스어플 정리] 5. 뷰모델을 테이블뷰에 붙이기 (0) 2021.05.24 [뉴스어플 정리] 4. 뉴스데이터를 뷰모델로 가공하기 (0) 2021.05.24 [뉴스어플 정리] 3. 뷰모델 만들기 (0) 2021.05.24 [뉴스어플 정리] 2. 뉴스데이터 가져오기 (0) 2021.05.24 뉴스어플 (0) 2021.05.24