node的http.request和http.get方法
## http.request
### 方法说明：
函数的功能室作为客户端向HTTP服务器发起请求。
### 语法：
```javascript
http.get(options, callback)
```
由于该方法属于http模块，使用前需要引入http模块
```javascript
var http= require("http") 
```
### 接收参数：

|option|数组对象，包含以下参数|
|-|-|
|host|表示请求网站的域名或IP地址（请求的地址）。 默认为'localhost'|
|hostname|服务器名称，主机名是首选的值|
|port|请求网站的端口，默认为 80|
|localAddress|建立网络连接的本地|
|socketPath|Unix Domain Socket（Domain套接字路径）|
|method|HTTP请求方法，默认是 ‘GET'|
|path|请求的相对于根的路径，默认是'/'。QueryString应该包含在其中。例如：/index.html?page=12|
|headers|请求头对象|
|auth|Basic认证（基本身份验证），这个值将被计算成请求头中的 Authorization 部分|
|callback| 回调，传递一个参数，为 http.ClientResponse的实例。http.request 返回一个http.ClientRequest 的实例|

例如我们可以实现一个机器人接口的代理
```javascript
var http = require("http");
//http://www.tuling123.com/openapi/api?key=c75ba576f50ddaa5fd2a87615d144ecf&info=%E8%AE%B2%E4%B8%AA%E7%AC%91%E8%AF%9D
http.request({
	hostname: 'www.tuling123.com',
	port: '80',
	path: '/openapi/api?key=c75ba576f50ddaa5fd2a87615d144ecf&info=%E8%AE%B2%E4%B8%AA%E7%AC%91%E8%AF%9D',
	method: 'GET'
}, function(res) {
	res.setEncoding('utf8');
	var data = "";
	res.on('data', function(chunk){
		data += chunk
	});
	res.on('end', function(){
		console.log(data);
	});
}).on('error', function(e) {
	console.log('problem with request: ' + e.message);
}).end();
```

## http.get

url为需要代理获取的页面链接，因为页面信息是一个流形式返回，所以需要`res.on`监听接受
```javascript
http.get(url, function(res) {
var data = "";
	res.on('data', function(chunk) {
		data += chunk
	})
	res.on('end', function() {
		console.log(data)
	})
})
```

## 中间件代理

比如下面这段代码，我们首先引入express框架，http模块（用来代理请求收发），fs模块（读写文件）
```javascript
var express = require('express');
var http = require("http");
var fs = require("fs")
var app = express();
```
编写第一个中间件，接受前端发送给我们的信息并写入html片段到`log.html`文件中，然后通过`http.request`发送消息到php服务器处理，那此时我们可以让nodejs帮我们读写文件，过滤数据，生成日志，存入测试服数据库等，那php服务器就专门就获取和存储数据到数据库，就可以减轻php后端的部分压力
```javascript
//中间层
app.get('/', function(req, res) {
	//nodejs专门写文件
	fs.readFile("log.html", function(err, data) {
		var content = `<tr>
			<th>${data.toString()}</th>
			<th>${req.query.name}</th>
			</tr>`;
		fs.writeFile("log.html", content, function(err) {

		})
	});
	//通信php
	//php专门存数据库
	http.request({
		hostname: 'localhost',
		port: '81',
		path: '/1702/nodedemo/test.php?name=' + req.query.name,
		method: 'GET'
	}, function(res) {
		res.setEncoding('utf8');
		var data = "";
		res.on('data', function(chunk) {
			data += chunk
		});
		res.on('end', function() {
			console.log(data);
		});
	}).on('error', function(e) {
		console.log('problem with request: ' + e.message);
	}).end();
	res.send('Hello World');
})
```
通过`/log`直接打开`log.html`日志页面
```javascript
app.get("/log", function(req, res) {
	fs.readFile("log.html", function(err, data) {
		res.send("<meta charset='utf-8' /><table>" + data + "</table>");
	})
})
app.listen(6789)
```
