【问题标题】:disable graphiql on production在生产中禁用 graphiql
【发布时间】:2017-12-29 02:41:36
【问题描述】:

如何在生产环境中禁用 graphiql,但在开发环境中仍然可以访问它?

使用 express-graphql 我们可以做类似的事情

app.use('/graphql', graphqlHTTP({
  schema: MySessionAwareGraphQLSchema,
  graphiql: process.env.NODE_ENV === 'development',
}));

使用 apollo 服务器,我的设置是

import {graphqlExpress, graphiqlExpress} from 'graphql-server-express'

const app = new Express()

app
  .all('/graphql', bodyParser.json())
  .all('/graphql', graphqlExpress({
      schema
  )
  .all('/graphiql', graphiqlExpress({
      endpointURL: 'http://localhost/graphql'
    })
  )

我找不到传递给 NODE_ENV 以启用/禁用 graphiql 的方法。

【问题讨论】:

    标签: apollo-server


    【解决方案1】:

    这是我在 koa 设置中的内容

    export default () => (
      convert(graphqlHTTP((req, res, ctx) => ({
        schema: require('app/graphql/schema'),
        context: {
          ...ctx.app.context,
          ...ctx.state,
        },
    
        // Enable graphql for development environments only
        graphiql: config.environment === 'development',
    
    
        formatError: error => ({
          message: error.message,
          stack: error.stack,
          locations: error.locations,
        }),
      })))
    )
    

    注意graphiql: config.environment === 'development', 从这里您可以传递自定义环境变量并使用它启动您的应用程序。

    ENABLE_GRAPHIQL=true NODE_ENV=production npm start_my_server
    

    根据您管理环境变量的方式,您可以将表达式更改为

    graphiql: myEnv.ENABLE_GRAPHIQL || myEnv.environment === 'development', 
    

    FWIW 你不应该在生产中启用 graphiql

    【讨论】:

      【解决方案2】:

      您的意思是仅在开发时启用 graphiql 并在生产时禁用它。如果是这样,只需排除 /graphiql 处理程序

      if (process.env.NODE_ENV === 'development') {
        app.all(
          '/graphiql',
          graphiqlExpress({
            endpointURL: '/graphql',
          }),
        );
      }
      

      【讨论】:

      • 嘿,这看起来是一种方式。我以为我们可以设置一个布尔值来禁用或启用它。
      猜你喜欢
      • 2021-08-19
      • 2019-08-28
      • 1970-01-01
      • 2012-03-29
      • 2023-03-09
      • 2011-11-19
      • 2019-04-22
      • 1970-01-01
      • 2015-01-09
      相关资源
      最近更新 更多