大家好,正在使用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();
})
答案 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>