2.1.4.2 Networking with URLSession (or Alamofire)
Example: Fetching user posts
// Services/ApiService.swift
import Foundation
class ApiService {
static let shared = ApiService()
private init() {}
func fetchPosts(completion: @escaping (Result<[Post], Error>) -> Void) {
guard let url = URL(string: "http://localhost:4000/api/posts") else { return }
var request = URLRequest(url: url)
request.httpMethod = "GET"
let token = UserDefaults.standard.string(forKey: "authToken") ?? ""
request.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization")
URLSession.shared.dataTask(with: request) { data, response, error in
if let err = error {
completion(.failure(err))
return
}
guard let data = data else { return }
do {
let posts = try JSONDecoder().decode([Post].self, from: data)
completion(.success(posts))
} catch {
completion(.failure(error))
}
}.resume()
}
}
Last updated