Contents

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