我如何能使出站HTTP POST请求,与数据,在node.js?
当前回答
发布另一个axios的例子。Post请求,使用额外的配置选项和自定义头。
var postData = { 电子邮件:“test@test.com”, 密码:“密码” }; let axiosConfig = { 标题:{ “内容类型”:“application / json; charset = utf - 8”, “Access-Control-Allow-Origin”:“*”, } }; axios。post('http://<主机>:<端口>/<路径>',postData, axiosConfig) .then((res) => { console.log("RESPONSE RECEIVED: ", res); }) .catch((err) => { console.log("AXIOS ERROR: ", err); })
其他回答
如果您正在寻找基于承诺的HTTP请求,axios可以很好地完成它的工作。
const axios = require('axios');
axios.post('/user', {firstName: 'Fred',lastName: 'Flintstone'})
.then((response) => console.log(response))
.catch((error) => console.log(error));
OR
await axios.post('/user', {firstName: 'Fred',lastName: 'Flintstone'})
在为我的项目创建了一个低级实用程序来处理帖子和获取请求之后,我决定在这里发布我的努力。这里有一个关于发送JSON数据的http和https POST请求的代码片段。
const http = require("http")
const https = require("https")
// Request handler function
let postJSON = (options, postData, callback) => {
// Serializing JSON
post_data = JSON.stringify(postData)
let port = options.port == 443 ? https : http
// Callback function for the request
let req = port.request(options, (res) => {
let output = ''
res.setEncoding('utf8')
// Listener to receive data
res.on('data', (chunk) => {
output += chunk
});
// Listener for intializing callback after receiving complete response
res.on('end', () => {
let obj = JSON.parse(output)
callback(res.statusCode, obj)
});
});
// Handle any errors occurred while making request
req.on('error', (err) => {
//res.send('error: ' + err.message)
});
// Request is made here, with data as string or buffer
req.write(post_data)
// Ending the request
req.end()
};
let callPost = () => {
let data = {
'name': 'Jon',
'message': 'hello, world'
}
let options = {
host: 'domain.name', // Your domain name
port: 443, // 443 for https and 80 for http
path: '/path/to/resource', // Path for the request
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Content-Length': Buffer.byteLength(data)
}
}
postJSON(options, data, (statusCode, result) => {
// Handle response
// Process the received data
});
}
你也可以使用Requestify,这是我为nodeJS +编写的一个非常酷而简单的HTTP客户端,它支持缓存。
只需要做以下几点:
var requestify = require('requestify');
requestify.post('http://example.com', {
hello: 'world'
})
.then(function(response) {
// Get the response body (JSON parsed or jQuery object for XMLs)
response.getBody();
});
请求现在已弃用。建议您使用替代方案
无特定顺序且极不完整的:
const https = require('https'); node-fetch axios 得到了 搞 弯曲 make-fetch-happen unfetch tiny-json-http 针 urllib
统计比较 一些代码示例
最初的回答:
如果使用请求库,这将变得容易得多。
var request = require('request');
request.post(
'http://www.yoursite.com/formpage',
{ json: { key: 'value' } },
function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
);
除了提供一个不错的语法,它使json请求更容易,处理oauth签名(twitter等),可以做多部分的表单(例如上传文件)和流。
安装请求使用npm install request命令
如果您需要XML请求,我将与axios库共享我的代码。
const {default: axios} = require('axios');
let xmlString = '<XML>...</XML>';
axios.post('yourURL', xmlString)
.then((res) => {
console.log("Status: ", res.status);
console.log("Body: ", res.data);
})
.catch((err) => {
console.error("Error: ", err);
});
推荐文章
- Node.js上的html解析器
- 错误:无法找到模块“webpack”
- 为什么说“HTTP是无状态协议”?
- 使用Python请求的异步请求
- 我需要HTTP GET请求的内容类型报头吗?
- 在node.js中使用async / await文件系统
- NodeJS -用NPM安装错误
- 如何为本地安装npm包设置自定义位置?
- 回调函数来处理管道的完成
- Express函数中的“res”和“req”参数是什么?
- node.js TypeError:路径必须是绝对路径或指定根路径到res.sendFile[解析JSON失败]
- Passport.js -错误:序列化用户到会话失败
- 如何让Chrome允许混合内容?
- Node.js vs .Net性能
- 正确的方式删除cookies服务器端