SwiftHttp
An awesome Swift HTTP library to rapidly create communication layers with API endpoints.
Install
You can simply use SwiftHttp
as a dependency via the Swift Package Manager:
.package(url: "https://github.com/binarybirds/swift-http", from: "1.0.0"),
Add the SwiftHttp
product from the swift-http
package as a dependency to your target:
.product(name: "SwiftHttp", package: "swift-http"),
Import the framework:
import SwiftHttp
That's it.
Basic usage
It is really easy to setup a communication layer with an API endpoint.
import SwiftHttp
struct Todo: Codable {
let id: Int
let title: String
let completed: Bool
}
struct TodoApi: HttpCodablePipelineCollection {
let client: HttpClient = UrlSessionHttpClient(log: true)
let apiBaseUrl = HttpUrl(host: "jsonplaceholder.typicode.com")
func list() async throws -> [Todo] {
try await decodableRequest(executor: client.dataTask,
url: apiBaseUrl.path("todos"),
method: .get)
}
}
// api usage
let todos = try await api.list()
// curl log
// curl "https://jsonplaceholder.typicode.com/todos/"
The HttpClient provides the executors to perform data, download or upload tasks.
You can create decodable, encodable, codable or raw request when using a codable pipeline collection.
Request pipelines
Custom decoder
If you are using a request pipeline collection you can override the encoder and decoder objects.