Rest API in Swift

Contents

 

1. GitHub to RestAPI

2. REST API from Scratch

3. Hosting on Azure

RestAPI

Server side -> AWS / Azure / GCP

Client side -> client side

Rest API -> Open & Close 

HW

 

3. pages passing data

.aspectRatio(contentMode: isImageBig ? .fit : .fill )

//                    .frame(width: 600, height: 300)

                    .onTapGesture {

                        isImageBig = false

                    }

RestAPI call

 func getChatGptResponse() async throws -> ChatGptResponse { // many things can go wrong}
        let endpoint =  "https://raw.githubusercontent.com/iharnoor/iOS-Week4-Calculator-ChatGpt/main/server.json"
        
        guard let url = URL(string:endpoint) else { throw ChatGptError.invalidURL }
        
        let (data, response) = try await URLSession.shared.data(from: url)
        
        guard let response = response as? HTTPURLResponse, response.statusCode == 200 else {
            throw ChatGptError.invalidResponse
        }
        
        do {
            let decoder = JSONDecoder()
            decoder.keyDecodingStrategy = .convertFromSnakeCase
            return try decoder.decode(ChatGptResponse.self, from: data)
        } catch {
            throw ChatGptError.invalidData
        }
    }

ViewModel pattern

1. List made and move freely

2. Enviroment object

3. StateObject

Published

ObservableObject

EnvironmentObject

 

example Menu at multiple pages

try vs try?

State var x = "Hi"  -> Page1 

Binding var y = "Hi" -> Page2

Class ViewModel : ObservableObject{

 

@Published var x = "Hi"  -> Page1 

}

 

@StateObject var y = "Hi" -> Page2

Source

https://developer.apple.com/documentation/foundation/url_loading_system/fetching_website_data_into_memory

1. RestAPI function -> URL Response

2. Convert it to a MVVM model

Camera -> next week 

Errros

200 s -> Success

400s -> Client side error

500s -> Server Side Error

MVVM

ChatGPTResponse

MVVM

Model

Model View ViewModel

Rest API in SwiftTitle Text

By Harnoor Singh

Rest API in SwiftTitle Text

  • 190