richardpiazza/sessionplus
A swift _request & response_ framework for JSON apis.
Usage
SessionPlus offers a default implementation (URLSessionClient) that allows for requesting data from a JSON api. For example:
let url = URL(string: "https://api.agify.io")!
let client = BaseURLSessionClient(baseURL: url)
let request = Get(queryItems: [URLQueryItem(name: "name", value: "bob")])
let response = try await client.request(request)Decoding
The Client protocol also offers extensions for automatically decoding responses to any Decodable type.
struct ApiResult: Decodable {
let name: String
let age: Int
let count: Int
}
let response = try await client.request(request) as ApiResult
...
let response: ApiResult = try await client.request(request)Installation
SessionPlus is distributed using the Swift Package Manager. You can add it using Xcode or by listing it as a dependency in your Package.swift manifest:
let package = Package(
...
dependencies: [
.package(url: "https://github.com/richardpiazza/SessionPlus.git", .upToNextMajor(from: "2.0.0")
],
...
targets: [
.target(
name: "MyPackage",
dependencies: [
.product(name: "SessionPlus", package: "SessionPlus"),
]
)
]
)Contribution
Contributions to SessionPlus are welcomed and encouraged! See the Contribution Guide for more information.
Package Metadata
Repository: richardpiazza/sessionplus
Default branch: main
README: README.md