평범한 컴공 대학생의 공부일지

iOS Swift 오픈 API 가져오기 본문

iOS Swift

iOS Swift 오픈 API 가져오기

Taram 2024. 3. 13. 20:10

※이 iOS 카테고리의 글 들은 학교 강의와 과제를 기반으로 작성한 것입니다.※


이번 포스트에서는 영화진흥위원회의 오픈 API를 가져와 수정해보겠습니다.

  • 네이버에서 영화 순위 확인하기

2024.03.10 기준 일간 관객 수

 

네이버에 영화 순위를 검색해보면 어제 기준 일간 관객 수를 알려줍니다.
확인해보면 1등 파묘, 2등 듄, 3등 웡카 순으로 되어있는 것을 확인할 수 있습니다. 

i 버튼 클릭 시

여기서 i 버튼을 클릭해보면 알 수 있는 사실이 2가지 존재합니다.

1. 출처가 영화진흥위원회이다.

2. 업데이트 된 시각


1번째를 생각해보면 제가 위에서 말씀드렸다싶이 영화진흥위원회 오픈API를 가져와 우리도 네이버 영화 순위같은 프로그램을 만들 수 있다는 것입니다. 그 프로그램을 앞으로의 포스트에서 만들어보겠습니다.

  • 영화진흥위원회 오픈 API(JSON) 가져오기

영화진흥위원회 오픈API 사이트

 

네이버에 영화진흥위원회 API를 검색하면 위 사이트 링크가 뜨게됩니다.

아 사이트를 확인해보면 알 수 있는 사실이 3가지 있을겁니다.

1. REST / SOAP 방식으로 지원한다.
2. 요청 인터페이스(URL), 응답 구조(요청 인터페이스에 대한 값)

3. 응답 예시 : JSON, XML 방식 2가지가 있다.

 

여기서 2번째 항목 요청 인터페이스를 확인해보겠습니다. 여기서 중요하게 볼 점은 targetDt라는 요청 변수입니다. 
targetDT : targetDate로 원하는 날짜를 입력하면 해당 날짜의 일간 관객수를 1등부터 차례대로 보여줍니다.
바로 확인해볼까요?

JSON 형식

맨 위에 있는 showRange를 보면 20120101~20120101로 설정되어 있는 것을 알 수 있습니다.
이는 targetDT의 값이 20120101로 설정되어 있기 때문입니다. 그래서 네이버에서 확인한 2024-03-10의 일간 관객 수를 알아보기 위해 targetDT 값을 변경해보겠습니다.

JSON URL targetDT 확인

위 URL을 확인해보면 맨 마지막에 targetDT의 값이 20120101로 설정되어 있는 것을 확인할 수 있습니다. 20120101을 20240310으로 변경하면 JSON의 값들이 바뀌는 것을 알 수 있습니다.

targetDT 변경 후

targetDT를 변경했더니 맨 위에서 확인했던 showRange가 20240310~20240310으로 바뀐 것을 확인할 수 있습니다.
하지만 이 상태에서는 알아보기가 좀 힘들죠? https://codebeautify.org/jsonviewer 이 링크로 들어가시면 JSON 정보들을 보기 편하게 바꿀 수 있습니다.

JSON 텍스트 정리

JSON 텍스트들을 모두 복사, 붙여넣기 하여 Beauty 버튼을 클릭하면 오른쪽에 JSON 텍스트들을 정리하여 보여줍니다.

여기서 알 수 있는 사실 3가지가 있습니다.


1. showRange가 20240310~20240310으로 설정되어 있다.
2. rank는 순위를 의미하며 일간 관객 수 1등인 파묘, 2등인 듄: 파트2로 등수 순대로 알려준다.

3. 코드를 아래로 내리면 3등은 웡카, 4등은 브레드이발소로 네이버에서 검색한 내용과 동일하다.

 

즉, 이 JSON을 이용해 네이버 영화 일간 관객 수처럼 프로그램을 만들 수 있다는 것 입니다. 이 데이터를 통해 앞으로의 포스트에서 iOS Application을 만들어보겠습니다.


  • wrtn.ai (뤼튼)에게 질문한 내용들
    1. 신입개발자로 취업하는데 가장 많이 묻는 질문과 답변을 알려줘

 

         2. Swift와 Kotlin 언어의 문법을 표로 비교해줘


         3. Cross Platform을 개발할 때 react native와 Flutter의 장단점을 표로 만들어줘

 

          4. Kotlin에서 이름 10번 출력하기

for (i in 1..10) {
    println("Taram")
}


           5. Swift의 중요한 문법을 잘 이해할 수 있는 코드를 만들고 상세한 설명을 주석으로 달아줘

// 클래스 정의
class Animal {
    // 프로퍼티 정의
    var name: String
    var age: Int
    
    // 초기화 메서드
    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }
    
    // 메서드 정의
    func introduce() {
        print("안녕하세요, 저는 \(name)이고, 나이는 \(age)살입니다.")
    }
}

// 상속: Dog 클래스가 Animal 클래스를 상속
class Dog: Animal {
    var breed: String
    
    init(name: String, age: Int, breed: String) {
        self.breed = breed
        super.init(name: name, age: age) // 부모 클래스의 초기화 메서드 호출
    }
    
    // 메서드 오버라이딩
    override func introduce() {
        print("안녕하세요, 저는 개의 종류로 \(breed)이고, 이름은 \(name)이며, 나이는 \(age)살입니다.")
    }
}

// 인스턴스 생성
let myDog = Dog(name: "Taram", age: 5, breed: "Poodle")

// 메서드 호출
myDog.introduce()

 

            6. 영화진흥위원회 JSON데이터를 Swift 구조체로 변경해줘

struct BoxOfficeResult: Codable {
    let boxofficeType: String
    let showRange: String
    let dailyBoxOfficeList: [DailyBoxOffice]

    struct DailyBoxOffice: Codable {
        let rnum: String
        let rank: String
        let rankInten: String
        let rankOldAndNew: String
        let movieCd: String
        let movieNm: String
        let openDt: String
        let salesAmt: String
        let salesShare: String
        let salesInten: String
        let salesChange: String
        let salesAcc: String
        let audiCnt: String
        let audiInten: String
        let audiChange: String
        let audiAcc: String
        let scrnCnt: String
        let showCnt: String
    }
}

 

            7. 자바를 이용한 백엔드 분야 개발자로 취업하려고 하는데 예상 질문과 답변을 작성해줘.