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