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)
})
我有一些 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)
})