node.js - 如何在 graphql-yoga 中实现干净的 Next.js URL
问题描述
我正在创建一个使用 Next.js 进行服务器端渲染的 GraphQL 应用程序。您可能知道,有一种推荐的方法来使用 Express 实现干净的 URL。我正在尝试使用 graphql-yoga 来达到同样的效果,但它不起作用。
我已经尝试过server.express.get('/route', ...)
,server.get('/route', ...)
但没有任何效果。在他们提供的文档中,server.express.get(server.options.endpoint, handler())
但它对我不起作用。
有没有人在 GraphQL Yoga 服务器中实现过干净的 Next.js 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();
})
解决方案
使用新版本的 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 文档中有关动态路由的更多信息。
然后,您可以链接到它并显示所需的 URL:
<Link href="/post/[pid]" as="/post/abc">
<a>First Post</a>
</Link>
推荐阅读
- web3 - 交易时随机经历巨额的gas费用
- sql - 将 DAX 函数(包括 ALLEXCEPT、AVERAGE)转换为 PowerQuery 的 M
- javascript - 如何从一个数组中移动对象并系统地添加它循环并添加到多个数组中
- azure - 用于 SQL Server 和 Azure SQL 的 Apache Spark 连接器
- javascript - 为什么我的 Javascript 计算器在等于按下后按下运算符时将答案乘以 2?
- google-sheets - 根据数字和字母将一列分成两列
- windows - MFC CheckBox - 检索准确的正方形大小
- testing - 无代码启用/禁用测试
- discord - 如何检查用户是否在舞台频道
- python - 将字典列表转换为 DataFrame