一组扩展,允许将 GraphZahl 与 Vapor 框架一起使用。
警告:为了获得最佳体验,请将 graphzahl-vapor-support 与 Xcode 11.4 Beta 配合使用。
GraphZahl 是一个框架,旨在帮助您使用 Magic 🎩 实现声明式、类型安全的 GraphQL 服务器 API。
了解更多关于 GraphZahl 的信息:这里
您可以通过 Swift 包管理器 安装 graphzahl-vapor-support,只需将以下行添加到您的 Package.swift
文件即可:
import PackageDescription
let package = Package(
[...]
dependencies: [
.package(url: "https://github.com/nerdsupremacist/graphzahl-vapor-support.git", from: "0.1.0-alpha.")
]
)
现在,您可以直接将 Schema 添加到您的 APPs 路由中
enum HelloWorld: GraphQLSchema {
class Query: QueryType {
func greeting(name: String) -> String {
return "Hello, \(name)"
}
}
typealias Mutation = None
}
// Add the API to the Routes of your Vapor App
app.routes.graphql(path: "api", "graphql", use: HelloWorld.self)
您甚至可以添加 GraphiQL
app.routes.graphql(path: "api", "graphql", use: HelloWorld.self, includeGraphiQL: true)
如果您需要提供 ViewerContext,只需传递一个闭包,以说明如何从 Request 中获取 ViewerContext。
enum TodoApp: GraphQLSchema {
typealias ViewerContext = LoggedInUser?
class Query: QueryType {
let user: LoggedInUser?
func myTodos() -> [Todo]? {
return user?.todosFromDB()
}
required init(viewerContext user: LoggedInUser?) {
self.user = user
}
}
typealias Mutation = None
}
app.routes.graphql(path: "api", "graphql", use: TodoApp.self, includeGraphiQL: true) { $0.db }
欢迎并鼓励贡献!
graphzahl-vapor-support 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。
本项目在慕尼黑工业大学应用软件工程教研室的监督下完成。该教研室拥有使用和维护此工具的永久权利。