Setup Graphql API in React Nextjs
Devmnj • Wed Dec 15 2021
0 min read
Using the pages/api route we can add graphql end point in Nextjs. In order to achieve this we have to use *apollo-server-micro, express*. The API route will consume the server less function feature.
Problem
In most case, the methods that create the graphql server end up with errors. I have been tested those methods suggested by many youtubers, which end up with error, such as server can't access/located . I tried the cors , and it didn't make it.
Here is our full API for Nextjs route
Source code
//grphql.js
import { gql, ApolloServer } from "apollo-server-micro";
import { PrismaClient } from "@prisma/client";
import {
ApolloServerPluginLandingPageGraphQLPlayground,
ApolloServerPluginLandingPageDisabled,
} from "apollo-server-core";
const prisma = new PrismaClient();
const typeDefs = gql`
type Contact {
id: String
name: String
email: String
}
type Query {
contacts: [Contact]
}
`;
const resolvers = {
Query: {
contacts(_parent, _args, _context) {
return prisma.contact.findMany();
},
},
};
let apolloServerHandler =(req, res) => Promise
async function startServer(req, res) {
const server = new ApolloServer({
typeDefs,
resolvers,
plugins: [
ApolloServerPluginLandingPageGraphQLPlayground({
// options
}),
],
}) ;
await server.start();
apolloServerHandler= server.createHandler({path:'/api/graphql'});
return apolloServerHandler;
}
export default async (req,res)=>{
const apolloServerHandler = await startServer();
return apolloServerHandler(req,res)
}
export const config = { api: { bodyParser: false } };
Prisma ORM
I also utilized the Prisma ORM for fetching real time data, if you wanna know, how to Prisma, check out the Next Prisma Guide.
Tags :
graphqlnextjsappolo