Querl 是一个极简的 GraphQL 客户端库。它的目标是不受你的应用程序架构和技术选型的影响。它可以与任何网络堆栈一起使用,并且不对你的模型定义方式做任何假设。此外,它尽可能地具有 Swift 的特性:面向协议、类型安全、并且充满了泛型。它没有任何依赖项,并且包含不到 200 行易于审查的代码。
Querl 不是一个 GraphQL 查询构建库。Querl 没有提供一个框架或 DSL 来在编译时构建查询,而是期望你使用你喜欢的测试工具(Paw、Postman、Graphiql、Insomnia 等)来生成一个静态的 .graphql
文件,然后 Querl 从磁盘读取该文件。
Querl 支持以下 GraphQL 特性
它通过以下 Swift 语言特性支持这些 GraphQL 特性
Querl 尚未(还)支持以下 GraphQL 特性
要运行示例项目,请克隆仓库,然后首先从 Example 目录运行 pod install
。
代码可以像这样简单
query($code: ID!) {
country(code: $code) {
name
}
}
import Querl
struct CountryForCode: Query, HasArguments {
struct Response: Decodable {
let country: Country?
}
let code: String
}
let query = CountryForCode(code: "US")
let request = URLRequest(url: graphQLEndpoint)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try JSONSerialization.data(withJSONObject: query.body)
let (data, _) = try await URLSession.shared.data(for: request)
let country = try CountryForCode.decodeResponse(data).country // "United States of America"
这种模式可以很容易地适应 Alamofire 或任何其他执行 POST
请求的网络库。
Querl 需要 iOS 11.0 或更高版本。
Querl 可通过 CocoaPods 获得。要安装它,只需将以下行添加到您的 Podfile 中
pod 'Querl'
将 Querl 声明为包依赖项。
.package(
name: "Querl",
url: "https://github.com/joinhandshake/Querl",
.upToNextMinor(from: "0.1.0")),
在目标依赖项中使用 Querl
.product(name: "Querl", package: "Querl")
有关更多信息,请参见 CONTRIBUTING.md 。欢迎贡献!
有关更多信息,请参见 CODE_OF_CONDUCT.md 。
Joel Kin, open-source@joinhandshake.com, @foon@mastodon.social
Querl 在 Apache 2.0 许可下可用。有关更多信息,请参见 LICENSE 文件。