构建和运行针对Apollo Server的查询
在生产环境之外,Apollo Server 4的着陆页是Apollo Sandbox 的嵌入式版本(默认情况下由https://127.0.0.1:4000
提供):
Apollo Server 在生产中提供不同的着陆页。。
Apollo沙箱是一种用于本地开发的Apollo Studio特殊模式,它不需要Apollo账号。沙箱包含、一个强大的网络IDE,允许您在您的服务器(或任何可访问的服务器)上构建和运行操作。
生产环境与非生产环境
在生产环境中(当NODE_ENV
为production
时),Apollo Server会显示不同的着陆页面:
这主要是因为Apollo Server默认在生产环境中禁用了 introspection,这意味着像Apollo沙箱这样的工具无法工作。
因此,如果您选择更改Apollo Server的着陆页面,我们建议为生产环境和非生产环境使用不同的设置(甚至可能是在生产环境中禁用着陆页面)。
更改着陆页面
您可以通过安装几个不同版本的Apollo Server插件来改变从Apollo Server的基础URL提供的着陆页面。您可以选择配置默认着陆页面、提供GraphQL Playground(一个传统的开源GraphQL IDE),创建一个完全的自定义着陆页面,或者您可以选择完全禁用着陆页面。
您通过安装以下Apollo Server插件之一来完成此操作:插件。
配置默认着陆页面
Apollo Server会根据环境使用以下插件之一来显示默认着陆页面:
ApolloServerPluginLandingPageLocalDefault
(非生产环境)ApolloServerPluginLandingPageProductionDefault
(生产环境)
您可以手动安装任一插件来配置其行为。
例如,以下设置将我们的本地着陆页面配置为提供包含指向Apollo沙箱链接的启动页面:
import { ApolloServer } from '@apollo/server';import {ApolloServerPluginLandingPageLocalDefault,ApolloServerPluginLandingPageProductionDefault,} from '@apollo/server/plugin/landingPage/default';const server = new ApolloServer({typeDefs,resolvers,plugins: [process.env.NODE_ENV === 'production'? ApolloServerPluginLandingPageProductionDefault(): ApolloServerPluginLandingPageLocalDefault({ embed: false }),],});
有关这些插件的可用配置选项,请参阅API参考资料。
自定义登录页面
您可以从Apollo Server的基URL提供自定义HTML登录页面。要做到这一点,定义自己的自定义插件,调用renderLandingPage
方法,如下所示:
const server = new ApolloServer({typeDefs,resolvers,plugins: [{async serverWillStart() {return {async renderLandingPage() {const html = `<!DOCTYPE html><html><head></head><body><h1>Hello world!</h1></body></html>`;return { html };},};},},],});
禁用登录页面
您可以通过向Apollo Server构造函数提供以下插件来禁用Apollo Server的登录页面:
import { ApolloServerPluginLandingPageDisabled } from '@apollo/server/plugin/disabled';const server = new ApolloServer({typeDefs,resolvers,plugins: [ApolloServerPluginLandingPageDisabled()],});