IORequestable 0.1.11

IORequestable 0.1.11

Roy Hu维护。



  • 作者
  • royhcj

IORequestable

CI Status Version License Platform

使用 IORequestable 在 Swift 中以简单的方式定义和执行您的 Web API 请求。

这是什么?

IORequestable 通过封装可编码输入和输出类型以及基于 Moya 抽象层的 URL 请求规范,提供了一个干净、简单的方式来创建 Web API 请求。

API = 可编码输入 + 可解码输出 + URL 及其他选项

用法

指定一个共享基URL

import IORequestable
import Moya

protocol SomeIORequestable: MoyaIORequestable {}
extension SomeIORequestable {
  var baseURL: URL {
    return URL(string: "https://example.com")!
  }
}

定义一个API

struct GetBestPerson: SomeIORequestable {

  var spec = Spec(.get, "/api/people/best",
                  inputEncoding: .urlParameter)

  struct Input: Encodable {
    let trait: String
    let gender: String?
  }

  struct Output: Decodable {
    let name: String
    let height: Double?
    let weight: Double?
  }

}

就这样!您已经创建了一个可执行的API。让我们运行它并试一试。

执行一个API请求

  GetBestPerson(.init(trait: "kindness",
                      gender: "all"))
    .execute() { result in
      switch result {
      case .success(let output):
        // ...
      case .failure(let error):
        // ...
      }
    }

其他技巧

技巧#1

要定义路径占位符,请在路径中使用{ },并对输入参数使用@PathOnly。

struct GetUserInfo: SomeIORequestable {
  var spec = Spec(.get, "/api/books/{bookID}") // Use { } for placeholder

  struct Input: Encodable {
    @PathOnly var bookID: String // Use @PathOnly
    var otherParameter: Int
  }

  struct Output = ...
}

提示 #2

要将现有模型用作输入或输出,请使用别名。

struct GetUserInfo: SomeIORequestable {
  var spec = ...

  typealias Input = String // Define input as String

  typealias Output = Person // Use Person as Output,
                            // where Person conforms to Decodable.  
}

示例项目

要运行示例项目,请首先克隆仓库,然后从 Example 目录运行 pod install 命令。

需求

安装

IORequestable 可通过 CocoaPods 获取。要安装它,只需将以下行添加到您的 Podfile 中

pod 'IORequestable'

作者

royhcj, [email protected]

许可证

IORequestable 采用 MIT 许可证发布。有关更多信息,请参阅 LICENSE 文件。