如何在graphql-yoga中实现干净的next.js URL

时间:2019-08-17 18:57:53

标签: node.js graphql next.js

大家好,正在使用next.js创建graphql应用程序进行服务器端渲染。您可能已经知道,有一种使用express实现干净URL的明确方法。我正在尝试使用graphql-yoga实现相同功能,但无法正常工作。我已经尝试过server.express.get('/ route',...)和server.get('/ route',...),但是没有任何作用。在文档中,他们给出了server.express.get(server.options.endpoint,handler()),但对我不起作用。有人在graphql Yoga服务器中实现了干净的下一个URL,您是如何实现的?下面是如何创建服务器。

function createServer() {
  return new GraphQLServer({
    typeDefs: "src/schema.graphql",
    resolvers: {
      Mutation,
      Query
    },
    context: req => ({ ...req, db })
  });
}


const server = createServer();

server.express.post('/product/name', (req,res,next) => {
  //this is where i want to implement next clean url
  //but it's not working
  console.log('Am never reached..');
  next();
})

1 个答案:

答案 0 :(得分:0)

使用新版本的Next.js,创建干净的URL非常简单。

创建参数化页面(例如pages/post/[pid].js

import { useRouter } from 'next/router'

const Post = () => {
  const router = useRouter()
  const { pid } = router.query

  return <p>Post: {pid}</p>
}

export default Post

Next.js documentation regarding dynamic routes中的更多信息。

然后您可以链接到它并显示所需的URL:

<Link href="/post/[pid]" as="/post/abc">
  <a>First Post</a>
</Link>