Computer >> 컴퓨터 >  >> 스마트폰 >> iPhone

SwiftUI에서 간단한 비동기 GET REST API 호출을 만드는 방법

초보자를 위한 이 튜토리얼에서는 SwiftUI를 사용하여 널리 사용되는 ICNDB(Internet Chuck Norris DataBase)를 예로 사용하여 API를 호출하는 기본 사항을 배웁니다. Swift 및 SwiftUI를 사용하여 쉽고 빠르게 농담을 표시합니다.

크로스 플랫폼 프레임워크인 SwiftUI를 사용하면 iOS, iPadOS, macOS, watchOS, App Clips 및 tvOS에서 완전히 동일한 코드를 사용할 수 있습니다. 그렇지 않으면 불가능했을 것입니다.

이와 함께 iOS> v15.0을 실행하는 iPhone을 포함한 최신 운영 체제에서 작동하는 Swift 5.5에 도입된 async-await를 사용할 것입니다. 이것은 UI 스레드를 정지시키지 않고 버튼을 클릭할 때 데이터 네트워크 호출을 비동기적으로 만드는 작업을 정말 단순화합니다.

먼저 변경해야 할 코드를 공유하겠습니다. 그런 다음 다음 섹션에서는 초보자도 진행 상황을 이해할 수 있도록 코드에 대한 간략한 분석을 공유하겠습니다.

SwiftUI에서 간단한 비동기 GET REST API 호출을 만드는 방법
코드를 실행하는 tvOS 앱은 클릭 시 농담을 검색하는 버튼을 표시합니다.

Swift 및 SwiftUI에서 API 호출하는 방법

먼저 Xcode를 설치하려면 Mac이 필요합니다. 설치가 완료되면 Xcode를 열고 새 프로젝트를 만듭니다. 그런 다음 iOS, macOS, tvOS 또는 watchOS용 "앱"을 선택합니다.

콘텐츠 보기

기존 ContentView SwiftUI 파일을 업데이트하여 버튼을 추가하고 상태를 사용하세요. ICNDB API에서 농담이 반환될 때 표시되는 텍스트를 새로 고치는 변수:

import Foundation
import SwiftUI
struct ContentView: View {
    @State private var joke: String = ""
    var body: some View {
        Text(joke)
        Button {
            Task {
                let (data, _) = try await URLSession.shared.data(from: URL(string:"https://api.chucknorris.io/jokes/random")!)
                let decodedResponse = try? JSONDecoder().decode(Joke.self, from: data)
                joke = decodedResponse?.value ?? ""
            }
        } label: {
            Text("Fetch Joke")
        }
    }
}
struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
struct Joke: Codable {
    let value: String
}

농담을 가져와!

빌드/재생을 누르면 위에서 선택한 플랫폼에서 앱이 빌드됩니다.

SwiftUI에서 간단한 비동기 GET REST API 호출을 만드는 방법
같은 코드를 실행하는 watchOS, macOS 및 iOS 앱의 스크린샷

코드 분석

임의의 조크 URL로 이동하면 데이터가 JSON 형식임을 알 수 있습니다. 이를 복사하고 JSON Linter를 사용하여 구조를 보고 Joke 객체의 어떤 속성이 필요한지 파악할 수 있습니다.

이를 바탕으로 위의 코드를 결정합니다. Codable 프로토콜(인터페이스라고도 함)을 사용하여 JSON 데이터 개체에서 실제 Swift 클래스 또는 구조체로 이동하고 저장하려는 데이터(이 경우 값)에 대한 속성을 만듭니다.

JSONDecoder는 Codable 객체를 사용하여 JSON 문자열을 구문 분석하는 데 도움이 됩니다. 앱 실행 시 로드되는 페이지의 이름이 ContentView와 같기 때문에 플랫폼에 관계없이 작동합니다. 플랫폼에 관계없이.

앱 클립

앱 클립은 App Store에서 전체 애플리케이션을 다운로드할 필요 없이 "앱 클립 코드"를 사용하여 기본 앱 기능을 사용하는 Apple의 최신 방법입니다.

앱 클립은 iOS 앱과 유사하게 작동합니다. 유일한 차이점은 새 앱 클립 프로젝트를 생성하지 않는다는 것입니다. 기존 iOS 앱이 Xcode에서 열려 있을 때 파일->새로 만들기->대상->iOS->앱 클립으로 이동하여 기존 iOS 앱에 대상으로 앱 클립을 추가하기만 하면 됩니다.

iPhone/iPad 위젯에 대해 궁금한 점이 있다면 애니메이션이 적용되지 않습니다. 따라서 버튼을 클릭하면 해당 앱이 열리고 외부 API를 통해 독립적으로 텍스트를 업데이트할 수 없습니다.

결론

이 기사에서는 가능한 가장 간단한 방법으로 SwiftUI에서 RESTful GET API를 호출하는 방법을 배웠습니다!

궁금한 점이 있으면 언제든지 문의해 주세요. 다른 기사를 사용하여 이것을 알아냈고 더 단순화할 생각을 했습니다. 따라서 이 코드를 더 복잡하게 만드는 방법과 자세한 내용은 다음 문서를 확인하세요.

async/await in SwiftUIConvert a SwiftUI 앱을 사용하여 새로운 Swift 동시성을 사용하고 반짝이는 표면 아래에서 무슨 일이 일어나고 있는지 알아보세요. SwiftUI에서 간단한 비동기 GET REST API 호출을 만드는 방법 오드리 Tamraywenderlich.com SwiftUI에서 간단한 비동기 GET REST API 호출을 만드는 방법