在生产中禁用 graphiql
disable graphiql on production
如何在生产环境中禁用 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 传递给 enable/disable graphiql 的方法。
您的意思是仅在开发中启用 graphiql 而在生产中禁用它。如果是这样,只需排除 /graphiql 处理程序
if (process.env.NODE_ENV === 'development') {
app.all(
'/graphiql',
graphiqlExpress({
endpointURL: '/graphql',
}),
);
}
这是我在 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
如何在生产环境中禁用 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 传递给 enable/disable graphiql 的方法。
您的意思是仅在开发中启用 graphiql 而在生产中禁用它。如果是这样,只需排除 /graphiql 处理程序
if (process.env.NODE_ENV === 'development') {
app.all(
'/graphiql',
graphiqlExpress({
endpointURL: '/graphql',
}),
);
}
这是我在 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