GraphZahl Vapor 支持

一组扩展,允许将 GraphZahlVapor 框架一起使用。

警告:为了获得最佳体验,请将 graphzahl-vapor-support 与 Xcode 11.4 Beta 配合使用。

关于 GraphZahl

GraphZahl 是一个框架,旨在帮助您使用 Magic 🎩 实现声明式、类型安全的 GraphQL 服务器 API。

了解更多关于 GraphZahl 的信息:这里

安装

Swift 包管理器

您可以通过 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 文件。

本项目在慕尼黑工业大学应用软件工程教研室的监督下完成。该教研室拥有使用和维护此工具的永久权利。