gpt4 book ai didi

javascript - 如何在Next js上将数据从express服务器发送到客户端?

转载 作者:行者123 更新时间:2023-12-02 23:03:23 25 4
gpt4 key购买 nike

我有一个带有 Express 的下一个 js Web 应用程序。我想将数据发布到此网页,在我的服务器上获取它并将其传递到我的下一个 js 页面。我是 next js 和express 的新手。以下是我的 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 request 时,我可以使用 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')
}

我能够看到我的服务器响应,但我仍然无法在客户端上获取它。我正在尝试在 Postman 上测试它。

我想从我的服务器代码创建一个端点,以将数据发送到我的客户端并在 getInitialProps 中接收该数据并将其呈现在我的客户端上。非常感谢任何帮助或建议。谢谢。

最佳答案

结帐api routes nextjs 9 支持。

基本上,您需要在 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

关于javascript - 如何在Next js上将数据从express服务器发送到客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57703750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com