在GraphQL中使用非默认架构

时间:2019-11-15 10:25:49

标签: laravel graphql graphiql

我正在为移动应用程序后端构建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找到它。

1 个答案:

答案 0 :(得分:0)

证明这个很简单,看起来很难追踪。

GraphQL端点和GraphiQL接口的URL都有一个用于模式名称字段的可选参数,如php artisan routes:list输出中的相关行所示。这包括以下路线:

  • graphql/{default}
  • graphql/{auth}
  • graphiql/{default}
  • graphiql/{auth}

如果在浏览器中导航到graphiql/auth,则可以在其中使用注册到auth模式的查询和变异。同样,您可以照常查询graphql/auth。在这两种情况下,都将应用auth模式的中间件集。

如果您未指定第二个URL参数,则将使用default模式。