Dan*_*man 93
有关完整示例,请参阅HTTP模块的文档:
https://nodejs.org/api/http.html#http_http_request_options_callback
小智 71
http用于运行服务器的模块也用于发出远程请求.
这是他们的文档中的示例:
var http = require("http");
var options = {
host: 'www.google.com',
port: 80,
path: '/upload',
method: 'POST'
};
var req = http.request(options, function(res) {
console.log('STATUS: ' + res.statusCode);
console.log('HEADERS: ' + JSON.stringify(res.headers));
res.setEncoding('utf8');
res.on('data', function (chunk) {
console.log('BODY: ' + chunk);
});
});
req.on('error', function(e) {
console.log('problem with request: ' + e.message);
});
// write data to request body
req.write('data\n');
req.write('data\n');
req.end();
Run Code Online (Sandbox Code Playgroud)
Nit*_*wal 30
您可以轻松使用请求模块:
https://www.npmjs.com/package/request
示例代码:
var request = require('request');
request('http://www.google.com', function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body) // Show the HTML for the Google homepage.
}
else {
console.log("Error "+response.statusCode)
}
})
Run Code Online (Sandbox Code Playgroud)
JCM*_*JCM 25
由于看起来像node-curl死了,我已经分叉,更名和修改更喜欢卷曲和Windows下的编译.
用法示例:
var Curl = require( 'node-libcurl' ).Curl;
var curl = new Curl();
curl.setOpt( Curl.option.URL, 'www.google.com' );
curl.setOpt( 'FOLLOWLOCATION', true );
curl.on( 'end', function( statusCode, body, headers ) {
console.info( statusCode );
console.info( '---' );
console.info( body.length );
console.info( '---' );
console.info( headers );
console.info( '---' );
console.info( this.getInfo( Curl.info.TOTAL_TIME ) );
this.close();
});
curl.on( 'error', function( err, curlErrorCode ) {
console.error( err.message );
console.error( '---' );
console.error( curlErrorCode );
this.close();
});
curl.perform();
Run Code Online (Sandbox Code Playgroud)
Perform是异步的,目前无法同步使用它(也可能永远不会).
它仍处于alpha状态,但这种情况很快就会发生变化,并且对此表示赞赏.
现在可以Easy直接使用句柄进行同步请求,例如:
var Easy = require( 'node-libcurl' ).Easy,
Curl = require( 'node-libcurl' ).Curl,
url = process.argv[2] || 'http://www.google.com',
ret, ch;
ch = new Easy();
ch.setOpt( Curl.option.URL, url );
ch.setOpt( Curl.option.HEADERFUNCTION, function( buf, size, nmemb ) {
console.log( buf );
return size * nmemb;
});
ch.setOpt( Curl.option.WRITEFUNCTION, function( buf, size, nmemb ) {
console.log( arguments );
return size * nmemb;
});
// this call is sync!
ret = ch.perform();
ch.close();
console.log( ret, ret == Curl.code.CURLE_OK, Easy.strError( ret ) );
Run Code Online (Sandbox Code Playgroud)
此外,该项目现在稳定!
Aro*_*ano 15
我通常使用REQUEST,它是Node.js的简化但功能强大的HTTP客户端
https://github.com/request/request
它在NPM上
npm install request
这是一个用法示例:
const axios = require('axios');
// Make a request for a user with a given ID
axios.get('/user?ID=12345')
.then(function (response) {
// handle success
console.log(response);
})
.catch(function (error) {
// handle error
console.log(error);
})
.then(function () {
// always executed
});
Run Code Online (Sandbox Code Playgroud)
小智 8
好吧,如果你真的需要卷曲等效,你可以尝试 node-curl
npm install node-curl
Run Code Online (Sandbox Code Playgroud)
你可能需要添加libcurl4-gnutls-dev.
小智 5
在 Node.js 18 中你可以直接使用fetch
const res = await fetch('https://nodejs.org/api/documentation.json');
if (res.ok) {
const data = await res.json();
console.log(data);
}
Run Code Online (Sandbox Code Playgroud)