当前位置: 首页 > 知识库问答 >
问题:

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

蓝昊然
2023-03-14

我有一个下一个js web应用程序与Express。我想把数据发布到这个网页上,在我的服务器上获取它,然后把它传递到我的下一个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”})将数据从服务器发送到客户端,但当我尝试使用post执行相同的操作时,我无法在客户端上接收任何数据。最初,我尝试在查询参数中传递值,它工作得很好。以下是我的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')
}

我可以看到我的服务器响应,但我仍然无法在我的客户端上获取它。我正试着在邮递员身上测试

我想从我的服务器代码创建一个endpoint,将数据发送到我的客户端,并在getInitialProps中接收该数据,然后在我的客户端上呈现它。感谢您的帮助和建议。谢谢。

共有1个答案

干旺
2023-03-14

NextJS9支持的签出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')
}

那么该文件夹中的每个文件都将被称为route,您可以在客户端中将其称为/api/sample

 类似资料:
  • 我正在创建我的产品,并与这个问题。有一天,我设置了Socket.io,一切都很好。第二天,我将服务器和客户端从http迁移到HTTPS。迁移后客户端和服务器端仍然连接,但不能从客户端发射到服务器,从服务器发射到客户端。 我的ssl证书位于和中,它们加载正确。运行在上的服务器 我的示例react组件。我的react应用程序运行在上。HTTPS连接良好,工作良好。 我该怎么办?也许我在中错误地使用了s

  • 我有一个关于Java插座的技术问题。 例如,假设我有一个Java Sockets服务器和n个多个客户端。是否可以几乎实时地将数据从服务器发送到任何或所有客户端? 更准确地说: 有哪种监听器可以在Sockets客户端中实现 有人能告诉我什么方法是最好的吗?此外,如果有人有一个代码示例,我也会很高兴。 谢谢

  • 我正在Unity中制作一个游戏,我试图将数据从客户端发送到服务器并返回到客户端(试图保存实例),但当我收到数据并尝试将数据发送回客户端时,它表示udp客户端未连接。 它成功地将数据从我的Unity客户端发送到服务器,但一旦它到达那里,套接字就会断开连接,我就无法返回任何内容。正如你所看到的,我试图设置一些多播选项,但它似乎不能正常工作。 客户: 服务器: 因此,服务器中UdpClient的实例会保

  • 问题内容: 我想使用Android将数据发送到我的php页面。我该怎么做? 问题答案: 您可以使用AndroidHttpClient进行GET或POST请求: 创建一个AndroidHttpClient来执行您的请求。 创建一个HttpGet或HttpPost请求。 使用setEntity和setHeader]方法填充请求。 对您的请求使用客户端上的execute方法之一。

  • 我一直在做这个项目,其中一个部分包括从Raspberry向我的服务器发送一些数据。但它不能正常工作,我不知道为什么。我试图通过删除“urllib2”并使用“request”来修复错误。但徒劳的是,一切都没有改变。如果有人能帮助我,我会非常感激的。谢谢! PHP代码: python代码:

  • 我试图发送数据类型ArrayBuffer在json到我的服务器使用socket.io如下: 在服务器端,当我在套接字中收到“记录”事件时,我从JSON获取数据,并将其保存在名称文件中,如下所示: 我正在使用require('wav')) 我做错了什么?我不能像这样在插座中发送ArrayBuffer吗。伊奥?