Post 从 nodejs 向 php Api 请求数据

Post request to php Api from nodejs with data

我有一些 api 运行 在 例如.com/api.php

为了将 api 与 ajax 一起使用,我使用此代码:

        $.ajax({
            url: 'https://example.com/api.php',
            method: 'post',
            data: {'pass': 'mypass', 'action': 'someaction'},
        }).done(function(results){
            //results = JSON.parse(results); //no need to parse it!
            console.log(results);

            });
        })

我试图用 node.js 实现同样的事情,但我不知道如何发送数据。

我尝试了很多方法,这是其中之一:

axios.post('https://example.com/api.php', {
    'pass': 'passs',
    'action': 'myaction'
})
.then((res) => {
  console.log(`statusCode: ${res.statusCode}`)
  console.log(res)
  console.log(`statusCode: ${res.data}`)
})
.catch((error) => {
  console.error(error)
})

但我根本无法让它工作! res.statusCode returns 未定义和 res.data returns 什么都没有。 服务器记录每个用户尝试通过 api 执行的操作。 php api 有这样的东西:

    if($_POST['pass']== thePassword && $_POST['action']=='aSpecifiAction'){
// log the action,
//execute the action
}

我的操作没有出现在日志中,这意味着我的 axios 代码没有向 api 发送任何数据。那么如何让它表现得像上面的 jquery 代码一样呢?

使用 axios 不是必须的,如果有更简单的 request 或任何其他模块的解决方案就可以了。

提前致谢

Someone 帮助我 github 找到了问题。问题是 "that jQuery defaults to using the application/x-www-form-urlencoded format for POST data, whereas axios defaults to JSON"

在这个 [=21st=] 他们详细解释 https://www.npmjs.com/package/axios#using-applicationx-www-form-urlencoded-format

解决方案:

const axios = require('axios')

const qs = require('qs');
axios.post('https://example.com/api.php',  qs.stringify({
    'pass': 'passs',
    'action': 'myaction'
}))
.then((res) => {
  console.log(`statusCode: ${res.statusCode}`)
  console.log(res)
  console.log(`statusCode: ${res.data}`)
})
.catch((error) => {
  console.error(error)
})