美文网首页
核心模块——http

核心模块——http

作者: 小弋呀 | 来源:发表于2016-07-22 01:09 被阅读612次

    http模块API内容也不是很多,主要有http.server、http.ClientRequest、http.ServerResponse、http.IncomingMessage四个类

    一、http.server

    服务器类,创建一个服务器对象的方法如下:

    const http = require('http');
    const server = http.createServer((req, res) => { 
      //req即是http.IncomingMessage类
      //res是http.ServerResponse类
     res.end();
    });
    server.listen(8000);
    

    这就创建了一个服务器,监听8000端口,127.0.0.1:8000,createServer方法的回调函数用于监听server的request事件

    二、http.IncomingMessage

    上例中的req继承自此类,主要用于获取请求信息,属性如下:

    request

    现在自己用到了标出的这几个,
    req.url获取链接中的path部分,搭配URL模块可以轻松获取get请求的查询字符串

    三、http.ServerResponse

    例子中的res,用于响应客户端请求

    response
    var http = require('http');
    
    http.createServer(function (request, response) {
        response.writeHead(200, { 'Content-Type': 'text-plain' });
        response.write('Hello ');
        response.end('World\n');
    }).listen(8000);
    
    四、http.ClientRequest

    这是我理解为后端代理,用于在服务器发送请求,可以用这个写个小爬虫程序

    • http.get(options[, callback])
      发送get请求,不需要有请求体
    http.get('http://www.google.com/index.html', (res) => { 
      console.log(`Got response: ${res.statusCode}`); // consume  response body
      res.resume();
    })
    .on('error', (e) => { 
      console.log(`Got error: ${e.message}`);
    });
    

    此处的res是用于接收另一个服务端的响应,而不是去响应,可以堪称这个时候有点类似http.IncomingMessage(当然这完全不是一回事)

    • http.request(options[, callback])
      用于发送post请求,由于post请求需要有请求体,参数就复杂多了,官网的例子:
    var postData = querystring.stringify({ 'msg' : 'Hello World!'});
    var options = { 
        hostname: 'www.google.com', port: 80, 
        path: '/upload', 
        method: 'POST', 
        headers: { 
            'Content-Type': 'application/x-www-form-urlencoded', 
            'Content-Length': Buffer.byteLength(postData) }
     };
    var req = http.request(options, (res) => {
         console.log(`STATUS: ${res.statusCode}`); 
         console.log(`HEADERS: ${JSON.stringify(res.headers)}`); 
         res.setEncoding('utf8'); 
         res.on('data', (chunk) => {
           console.log(`BODY: ${chunk}`); 
         }); 
         res.on('end', () => {
           console.log('No more data in response.') 
         })
    });
    req.on('error', (e) => { 
        console.log(`problem with request: ${e.message}`);
    });
    // write data to request body
    req.write(postData);
    req.end();
    

    相关文章

      网友评论

          本文标题:核心模块——http

          本文链接:https://www.haomeiwen.com/subject/kbxijttx.html