/api-client

Easy HTTP Client for Swift

Primary LanguageSwift

APIClient

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.

License

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