Easy HTTP Client for Swift


Swift Xcode License Twitter: @cpageler93

APIClient is an easy to use HTTP Client for Swift based on swift-server/async-http-client..

Usage Example (GitHub)

Call your APIs like this

let githubClient = TestGitHubClient()
let repos = try githubClient.user.repositories(owner: "cpageler93").wait()

GitHub API Client (simplified)

import Foundation
import NIO
import NIOHTTP1
import APIClient

// Define your clients routes

class TestGitHubClient: APIClient {

    public var user: UserRoutes!

    init() {
        super.init(baseURL: URL(string: "https://api.github.com")!)
        user = UserRoutes(apiHandler: self.handler)


// Define single routes

struct UserRoutes {

    let apiHandler: APIRouteHandler

    func repositories(owner: String) -> EventLoopFuture<[Repository]> {
        return apiHandler.get("/users/\(owner)/repos", headers: apiHandler.githubHeader())


// Codable DTOs

struct Repository: Codable {

    var id: Int
    var name: String?
    var fullName: String?


// Header Helper

private extension APIRouteHandler {

    func githubHeader() -> HTTPHeaders {
        return headers(["User-Agent": "Swift GitHub Client"])


Need Help?

Please submit an issue on GitHub or contact me via Mail or Twitter.


This project is licensed under the terms of the MIT license. See the LICENSE file.


  • Swift Tools 5.2.0
View More Packages from this Author


Last updated: Mon May 29 2023 05:12:22 GMT-0500 (GMT-05:00)