Making a Request
Table of Contents
在HTTP中 有俩个module 涉及到, 一个是 HTTP 另外 一个是 HTTPs
你现在就可以在你的浏览器域名中 看到这个部分
现在大多数主流网站的module都是使用的HTTPs 因为它更附有安全性
概括:
目前,我们的Web应用程序往往与其他服务进行大量集成,无论是与Twitter等REST服务交互,还是从Flickr下载图像。使用Node / JavaScript是处理这类应用程序的最流行的语言之一。无论哪种方式,您都会发出大量的HTTP请求,这意味着您需要一个可靠的模块来使编写代码更加广泛运用
应用:
const request = require('request');
request('https://www.csdn.net', function(err, res, body) {
console.log(body);
});
上面这段代码,会返编写 csdn.net的内容
包括HTML, JSON 等等
第一个argument在request中 可以被替换成很多不同的量, 有 <URL / Object/ String>
Advanced 提高:
因此 我们会列出一个options 去包含我们所要请求的选项, 包括
url
: 网站method
: HTTPS 的方程(GET, POST, DELETE, etc)headers
: 一个http 的 object 被设置在 区域中
const https = require('https');
const options = {
hostname: 'encrypted.google.com',
port: 443,
path: '/',
method: 'GET'
};
然后我们便可以查看这个 网站中的信息
如下:
const req = https.request(options, (res) => {
console.log('statusCode:', res.statusCode);
console.log('headers:', res.headers);
res.on('data', (d) => {
process.stdout.write(d);
});
res.on('close', (d) => {
process.stdout.write('Done!');
});
});
req.on('error', (e) => {
console.error(e);
});
req.end();
在这 有三个event listener
function(res)
会产生当连接开始on('data') 当这里有chunk of data 的时候(filesystem 提到过)
on('close')被called 当连接终止
. on('end') 也有相同的结果
知识结合
如果结合filesystem的知识
把所有手机的data chunk 组合在一起
然后导入一个 file
例如:
var https = require("https");
var fs = require("fs");
var options = {
hostname: "en.wikipedia.org",
port: 443,
path: "/wiki/a",
method: "GET"
};
var req = https.request(options, function(res) {
var responseBody = "";
console.log("Response from server started.");
console.log(`Server Status: ${res.statusCode} `);
console.log("Response Headers: %j", res.headers);
res.setEncoding("UTF-8");
res.once("data", function(chunk) {
console.log(chunk);
});
res.on("data", function(chunk) {
console.log(`--chunk-- ${chunk.length}`);
responseBody += chunk;
});
res.on("end", function() {
fs.writeFile("Charactera.html", responseBody, function(err) {
if (err) {
throw err;
}
console.log("File Downloaded");
});
});
});
req.on("error", function(err) {
console.log(`problem with request: ${err.message}`);
});
req.end();
我们把 wikipedia 的 一张直接copy进入了 a.txt 文件中
然后运行这个file在浏览器中
除了图片 其他内容 都会一一呈现出来.