apollo-server-institution-next (英语)
与 Next.js 一起使用的阿波罗服务器集成.
版本数
- 如果你使用阿波罗服务器 4.x 使用版本 3.x
- 如果您使用阿波罗服务器 5.x 使用最新版本
开始
首先通过创建文件创建 Next.js API 路由 pages/api/graphql.js。 。 。 .
此 API 路由将在 /api/graphql。 。 。 .
接下来创建阿波罗服务器实例并传递给 startServerAndCreateNextHandler数字 :
import { ApolloServer } from '@apollo/server';
import { startServerAndCreateNextHandler } from '@as-integrations/next';
import { gql } from 'graphql-tag';
const resolvers = {
Query: {
hello: () => 'world',
},
};
const typeDefs = gql`
type Query {
hello: String
}
`;
const server = new ApolloServer({
resolvers,
typeDefs,
});
export default startServerAndCreateNextHandler(server);
您也可以将上下文函数传递到 startServerAndCreateNextHandler 因此:
export default startServerAndCreateNextHandler(server, {
context: async (req, res) => ({ req, res, user: await getLoggedInUser(req) }),
});
接下来的Js req 财务报告和审定财务报表 res 对象被传递到上下文函数.
App 路由器( Route 处理器)
首先通过例如创建文件创建 Next.js 路由处理器 app/api/graphql/route.js。 。 。 .
此路由处理器将在 /api/graphql。 。 。 .
下一个,创建阿波罗服务器实例,传递给 startServerAndCreateNextHandler 财务报告和审定财务报表
最后将处理器导出为 GET 和 POST :
import { startServerAndCreateNextHandler } from '@as-integrations/next';
import { ApolloServer } from '@apollo/server';
import { gql } from 'graphql-tag';
const resolvers = {
Query: {
hello: () => 'world',
},
};
const typeDefs = gql`
type Query {
hello: String
}
`;
const server = new ApolloServer({
resolvers,
typeDefs,
});
const handler = startServerAndCreateNextHandler(server);
export { handler as GET, handler as POST };
类型脚本
当使用此与 Route Handlers 的集成时, 您必须指定来信对象的类型(Response 或者说 NextResponse为上下文函数接收正确的类型签名:
import { NextRequest } from 'next/server';
// req has the type NextRequest
const handler = startServerAndCreateNextHandler<NextRequest>(server, {
context: async req => ({ req }),
});