Gryphon 3.1.0

Gryphon 3.1.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最新发布2017年11月
SwiftSwift 版本3.0
SPM支持 SPM

Ryo Ishikawa 维护。



Gryphon 3.1.0

  • Ryo Ishikawa

Gryphon (Swift 的 REST API 套件)

CI Status
Version
Platform
[Language
LICENSE

Gryphon 是一个适用于 Swift 的类型安全和便捷的 REST API 套件😋

Figure

用法

```swift
API
    .Messages
    .getMessage()
    .retry(max: 3) // It will retry the API request if that is timeout or failed.
    .interval(milliseconds: 500) // Specify the interval time of retry.
    .response{ result in
        /*
        * You can use `result` without nil checking.
        * The type of `result` is automatically inferred to your designation type.
        * e.g. This case of `result` is a type of `String`
        */

        switch result {
        case let .response(message):
            // Do something
        case let .error(error):
            // Do something
        }
    }

如何使用这个?👀

首先,创建一个 API 类。

例如。

final class API {
    ....
}

接下来一步,实现以满足 Requestable 协议的请求。

例如。

extension API {
    final class Messages: Requestable {
    
    // required `Requestable`
    static var baseURL: String {
        return "http://rinov.jp/"
    }

    // required `Requestable`
    static var path: String {
        return "Gryphon-Tutorial.php"
    }

    // Returns message(String) from server or error reason(Error).
    class func getMessage() -> Task<String, Error> {
        let task = Task<String, Error> { result in
            let url = URL(string: baseURL + path)!
            var request = URLRequest(url: url)
            request.httpMethod = "GET"
            let session = URLSession.shared.dataTask(with: request, completionHandler: { (data, response, error) in
                guard let data = data,
                    let json = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [AnyObject],
                    let message = json?[0]["result"] as? String else {
                        result(.error(ResponseError.unexceptedResponse(error as AnyObject)))
                        return
                }
                result(.response(message))
            })
            session.resume()
            }
            return task
        }
    }
}

然后您可以使用它如下。

API
    .Messages
    .getMessage()
    .retry(max: 3) // It will retry the API request if that is timeout or failed.
    .interval(milliseconds: 500) // Specify the interval time of retry.
    .response{ result in
        switch result {
        case let .response(message):
            // Do something
        case let .error(error):
            // Do something
        }
    }

要求

Swift4
XCode9

安装

在您的 Podfile 中

use_frameworks!

target 'YOUR_TARGET_NAME' do
  pod 'Gryphon', '~> 3.1'
end

并且

$ pod install

许可证

Gryphon 在 MIT 许可下发布。

https://github.com/rinov/Gryphon/blob/master/LICENSE