- API made with
Async/Await
- A simple network abstraction layer written in Swift.
- Supports CRUD methods.
- Compile-time checking for correct API endpoint accesses.
- No external dependencies.
Pocket Networking doesn't claim to be unique in this area, but it's not another monster
library that gives you a god's power. It does nothing but networking, but it does it well. It offers a good public API
with out-of-box implementations and great customization possibilities. PocketNetworking
utilizes Async/Await
in Swift 5.
Create a struct
conforming to EndpointProtocol
with all of your API resources like the following:
class CurrentPriceEndpoint: EndpointProtocol {
typealias Response = CurrentPriceResponse
let baseURL: URL = .init(string: "https://api.coindesk.com")!
let path = "/v1/bpi/currentprice.json"
let method = HTTP.Method.get
let query: HTTP.Query = [:]
let headers: HTTP.Headers = [:]
}
Response
should conform to Decodable
protocol
struct CurrentPriceResponse: Decodable {
let disclaimer: String
let chartName: String
let bpi: Currency
}
import pocketnetworking
let networking = NetworkProvider()
let endpoint = CurrentPriceEndpoint()
let result = await network.request(endpoint: endpoint)
Task {
switch result {
case .success(let model):
self.state = updateState(with: model)
case .failure(let error):
print(error)
}
See Example app
This tiny library is created with ❤️ by André Martingo