跳至主要内容

Grafserv 简介

Grafserv - 一个由 Grafast 提供支持的,针对 Node.js 的超快 GraphQL 服务器。

用法

Grafserv 支持许多不同的服务器,并且由于每个服务器都不同,因此每个服务器都有自己的入口点,例如 grafserv/node 用于 Node.js HTTP 服务器,或者 grafserv/express/v4 用于 Express v4。通常,您从所选服务器的相关入口点导入 grafserv 函数,然后创建一个实例

const serv = grafserv({ schema, preset });

grafserv 传递要使用的 GraphQL 架构(如果可用,否则传递 null 或 promise 也可接受)和一个 graphile-config 预设 - 即您的配置。预设可以是一个空对象,但这里有一个更大的(但并非详尽的)示例

const preset = {
grafserv: {
port: 5678,
host: "0.0.0.0",
dangerouslyAllowAllCORSRequests: false,
graphqlPath: "/graphql",
eventStreamPath: "/graphql/stream",
graphqlOverGET: true,
graphiql: true,
graphiqlPath: "/",
websockets: true,
maxRequestLength: 100000,
},
};

调用 grafserv 将返回一个实例;该实例将具有一些辅助函数,包括特定于将其与您选择的框架集成的辅助函数。对于基于中间件的服务器,这通常是 serv.addTo(app)(允许注册多个路由处理程序),尽管不同的服务器可能具有不同的 API,例如 Lambda 和 Next.js 的 serv.createGraphQLHandler()

注意:Grafserv 重新实现服务器可能具有的所有非 GraphQL 问题几乎没有价值,因此它依赖于您选择的服务器的生态系统来处理诸如压缩、速率限制、会话、cookie 等问题。例如,要压缩您的响应,您需要使用诸如 compression(用于 Express)、koa-compress(用于 Koa)或 @fastify/compress(用于 Fastify)之类的模块。

serv.release()

释放实例创建的任何资源;不再处理任何请求(尽管当前正在处理的请求将被允许完成)。

// TODO: 考虑终止订阅或其他长期运行的事物。

serv.onRelease(cb)

cb 添加到服务器释放时要调用的回调列表中;这对于释放仅为服务器创建的资源很有用。回调将按添加的相反顺序调用。

serv.setSchema(newSchema)

替换用于未来请求的模式(当前正在处理的请求不受影响) - 这主要用于“监视”模式。

serv.setPreset(newPreset)

替换用于未来请求的配置(当前正在处理的请求不受影响) - 这主要用于“监视”模式。请注意,某些配置更改可能需要重新启动才能在某些服务器上反映出来。

serv.getSchema()

返回当前正在使用的 GraphQL 模式,或返回该模式的 Promise。

serv.getPreset()

返回当前正在使用的已解析 graphile-config 预设。