APIKit
APIKit is a type-safe networking abstraction layer that associates request type with response type.
// SearchRepositoriesRequest conforms to Request protocol.
let request = SearchRepositoriesRequest(query: "swift")
// Session receives an instance of a type that conforms to Request.
Session.send(request) { result in
    switch result {
    case .success(let response):
        // Type of `response` is `[Repository]`,
        // which is inferred from `SearchRepositoriesRequest`.
        print(response)
    case .failure(let error):
        self.printError(error)
    }
}Requirements
- Swift 5.0 or later
 - iOS 8.0 or later
 - Mac OS 10.10 or later
 - watchOS 2.0 or later
 - tvOS 9.0 or later
 
If you use Swift 2.2 or 2.3, try APIKit 2.0.5.
If you use Swift 4.2 or before, try APIKit 4.1.0.
Installation
Carthage
- Insert 
github "ishkawa/APIKit" ~> 5.0to your Cartfile. - Run 
carthage update. - Link your app with 
APIKit.frameworkinCarthage/Build. 
CocoaPods
- Insert 
pod 'APIKit', '~> 5.0'to your Podfile. - Run 
pod install. 
Note: CocoaPods 1.4.0 is required to install APIKit 5.
Documentation
- Getting started
 - Defining Request Protocol for Web Service
 - Convenience Parameters and Actual Parameters