【问题标题】:getting request data from getInitialProps()从 getInitialProps() 获取请求数据
【发布时间】:2020-05-16 00:19:46
【问题描述】:

我正在尝试将数据从 python 脚本发布到 Next js 服务器。

#python script
import requests 
post_data = {'username':'bob', 'id' : 32}
# POST some form-encoded data:
post_response = requests.post(url='http://localhost:3000/foo', data=post_data)

我确实收到了服务器上的请求,但我不知道如何在 getInitalProps() 中检索数据。我查看了文档,但似乎没有这样的信息。

 static async getInitialProps({props, req})
     {
        console.log('request data: ', req.data);
      }

【问题讨论】:

    标签: javascript python node.js next.js


    【解决方案1】:

    遇到了同样的问题,发现解决方案很好地隐藏在Next.JS forums中。

    简而言之,首先您需要Urlencoded Body Parser 库来帮助解析HTTP 请求对象。使用npm安装:

    npm install --save urlencoded-body-parser
    

    然后在你的代码文件中,你调用它的函数来获取一个包含 post 变量的对象:

    import parse from 'urlencoded-body-parser';
    
    static async getInitialProps(context)
    {
        if (context.req.method === "POST") {
            const data = await parse(context.req);
            console.log("request data: ", data);
        }
    }
    

    结果,基于问题样本数据:

    {
        "username": "bob",
        "id" : "32"
    }
    

    【讨论】:

      【解决方案2】:

      应该是这样的:

      static getInitialProps ({ query: { data } }) {
         console.log('request data: ', data);
      }

      请注意,您还需要在 server.js 中传递数据:

      server.get('/foo', (req, res) => {
        return app.render(req, res, '/pageFoo', req.query)
      })

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-22
        • 2021-06-04
        • 2016-02-08
        • 2011-05-05
        相关资源
        最近更新 更多