在 GraphQL 中使用非默认模式
Using non-default schema in GraphQL
我正在为移动应用后端构建 GraphQL API。我正在使用 rebing/graphql-laravel 在 Laravel 之上构建它,但遇到了一些麻烦。
大多数查询和变更都需要用户登录,因此他们使用身份验证中间件来限制访问(尽管在某些时候我计划用 JWT 替换它,这将在生产中使用)。但是,未登录的用户应该可以访问两个变更 - 一个是通过登录详细信息并获取 JWT,另一个是注册用户并获取 JWT。
我能找到的唯一方法是将这些突变移动到一个单独的 auth
模式中。但是,尽管查阅了文档,但我终其一生都找不到如何指定默认模式以外的模式。
创建用户的突变如下所示:
mutation {
createUser (
email: "jeff@example.co.uk",
name: "Jeff",
password: "password"
) {
token
}
}
如果我将变更移至默认架构,它会起作用,但当然这对我的用例没有用。
我需要如何调整它才能使用 auth
架构而不是 default
架构?听起来应该很简单,但我一辈子都无法通过 Google.
找到它
原来这个是足够简单,只是似乎很难找到。
GraphQL 端点和 GraphiQL 接口的 URL 模式名称字段都有一个可选参数,如 php artisan routes:list
输出的相关行所示。这包括以下路线:
graphql/{default}
graphql/{auth}
graphiql/{default}
graphiql/{auth}
如果您在浏览器中导航到 graphiql/auth
,则您可以在那里使用注册到 auth
模式的查询和变更。同样,您可以像往常一样查询 graphql/auth
。在这两种情况下,您都会为应用的 auth
模式设置中间件。
如果您不指定第二个 URL 参数,那么您将使用 default
架构。
我正在为移动应用后端构建 GraphQL API。我正在使用 rebing/graphql-laravel 在 Laravel 之上构建它,但遇到了一些麻烦。
大多数查询和变更都需要用户登录,因此他们使用身份验证中间件来限制访问(尽管在某些时候我计划用 JWT 替换它,这将在生产中使用)。但是,未登录的用户应该可以访问两个变更 - 一个是通过登录详细信息并获取 JWT,另一个是注册用户并获取 JWT。
我能找到的唯一方法是将这些突变移动到一个单独的 auth
模式中。但是,尽管查阅了文档,但我终其一生都找不到如何指定默认模式以外的模式。
创建用户的突变如下所示:
mutation {
createUser (
email: "jeff@example.co.uk",
name: "Jeff",
password: "password"
) {
token
}
}
如果我将变更移至默认架构,它会起作用,但当然这对我的用例没有用。
我需要如何调整它才能使用 auth
架构而不是 default
架构?听起来应该很简单,但我一辈子都无法通过 Google.
原来这个是足够简单,只是似乎很难找到。
GraphQL 端点和 GraphiQL 接口的 URL 模式名称字段都有一个可选参数,如 php artisan routes:list
输出的相关行所示。这包括以下路线:
graphql/{default}
graphql/{auth}
graphiql/{default}
graphiql/{auth}
如果您在浏览器中导航到 graphiql/auth
,则您可以在那里使用注册到 auth
模式的查询和变更。同样,您可以像往常一样查询 graphql/auth
。在这两种情况下,您都会为应用的 auth
模式设置中间件。
如果您不指定第二个 URL 参数,那么您将使用 default
架构。