[英]How to send data from express server to client on Next js?
我有一个带有Express的下一个js网络应用程序。 我想将数据发布到此网页上,以在服务器上获取它,并将其传递给下一个js页面。 我是下一个js的新手并表示。 以下是我的server.js代码:-
const express = require('express')
const next = require('next')
const port = parseInt(process.env.PORT, 10) || 3000
const dev = process.env.NODE_ENV !== 'production'
const app = next({ dev })
const handle = app.getRequestHandler()
app.prepare().then(() => {
const server = express()
server.use(express.json());
server.post("/posts", (req, res) => {
req.body.data
console.log("Post data : ",req.body.data)
console.log("JSON Response : ",res.json());
});
// server.get('/posts/', (req, res) => {
// console.log("Post data again : ",res.body.data)
// return app.render(req, res, '/posts', { id: "Pritam" })
// })
server.get('*', (req, res) => {
return handle(req, res)
})
server.listen(port, err => {
if (err) throw err
console.log(`> Ready on http://localhost:${port}`)
})
})
当我使用get请求时,我可以使用return app.render(req,res,'/ posts',{name:“ Pritam”})将数据从服务器发送到客户端,但是当我尝试执行相同的操作时发布后,我无法在客户端上接收任何数据。 最初,我尝试在查询参数中传递值,并且工作正常。 以下是我的posts.js代码:-
import React, { Component } from 'react'
class Posts extends Component {
static async getInitialProps ({ query: { id } }) {
console.log("Response is ")
return { postId: id }
}
render () {
return (
<div>
<p>Post data {this.props.postId}</p>
</div>
)
}
}
export default Posts;
如@JasperBernales所建议,我对server.js进行了以下更改:-
server.post("/api/agreement", (req, res) => {
req.body.data
res.send("ESAnup")
console.log("Post data agreement: ",req.body.data)
console.log("JSON Response agreement : ",res.json());
});
而且我还为api / agreement.js创建了一个目录,其中包含以下代码:-
export default function handle(req, res) {
console.log("Request Body",req.body.data) // The request body
console.log("Request Query :",req.query) // The url querystring
console.log(req.cookies) // The passed cookies
res.json({ title: 'Hello World JSON' })
res.end('Hello World')
}
我能够看到我的服务器响应,但是仍然无法在客户端上获取它。 我正在尝试在邮递员上进行测试。
我想从服务器代码创建一个端点,以将数据发送到客户端,并在getInitialProps中接收该数据并将其呈现在客户端上。 非常感谢您的任何帮助或建议。
nextjs 9支持的检出api路由
基本上,您需要在pages
文件夹下创建一个名为api
文件夹。
例如,您在文件夹中有一个名为sample.js
的文件
export default function handle(req, res) {
console.log(req.body) // The request body
console.log(req.query) // The url querystring
console.log(req.cookies) // The passed cookies
res.end('Hello World')
}
那么此文件夹中的每个文件都将称为路由,您可以在客户端中将其称为/api/sample
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.