Node(v6.5.0 Documentation)--HTTP

HTTP

摘要:1、最近今天三四天都在看Nodejs里面的HTTP这个模块,从官方文档到翻译的中文版本(英文文档虽然对我来说有点难度,但是要坚持,然后在看中文文档,在返过来看英文文档,为的就是提高英文技术文档的阅读能力,谁让好的氛围都是用英语交流呢?);
2、原来做demo的时候,只是引用http、express模块,然后监听“端口”,“主机名”;然后启动Node,在浏览器上输入URL;就算放到服务器上面running了;当时以为这就是Node,现在想想真脸红;主要是先入为主的原因,以为能在服务器上跑了,能操作mySql就算是会了Node;express-主要是解决了请求路由和视图模板,参考文章:
http://www.cnblogs.com/hyddd/p/4237099.html
做demo时候的理解:
这里写图片描述
这么看也没有错,用了express框架后,感觉很简单;但是更多的操作就没有了,比如说文件的上传,解析,等等……;后面我会继续学习,记日志,做demo;
nodejs–http.js

'use strict';
exports.IncomingMessage = require('_http_incoming').IncomingMessage;

exports.OutgoingMessage = require('_http_outgoing').OutgoingMessage;

exports.METHODS = require('_http_common').methods.slice().sort();

const agent = require('_http_agent');
exports.Agent = agent.Agent;
exports.globalAgent = agent.globalAgent;

const server = require('_http_server');
exports.ServerResponse = server.ServerResponse;
exports.STATUS_CODES = server.STATUS_CODES;
exports._connectionListener = server._connectionListener;
const Server = exports.Server = server.Server;

exports.createServer = function(requestListener) {
  return new Server(requestListener);
};

const client = require('_http_client');
const ClientRequest = exports.ClientRequest = client.ClientRequest;

exports.request = function(options, cb) {
  return new ClientRequest(options, cb);
};

exports.get = function(options, cb) {
  var req = exports.request(options, cb);
  req.end();
  return req;
};
  1. 引用http.js模块:const http = require(“http”);(这里不讲解requirejs的用法,基础知识自行了解这里的“http”应该是路径下面的httpjs文件)
    1. 上面的代码段就是http的模块,exports对象下面的方法都可以调用,相当于是const http = exports[“索引值”];这样定义的http就具有了这个模块中exports对象下面的所有方法,属性了;真心的方便;
    2. 上面代码段中凡是涉及 const XX = require(“XX”);你都可以去查找到源码,(上github.com中搜索node-找到最多关注的git库,里面就是源码;查找文件可以按键盘上的“t”键搜索);
      这里写图片描述
      这里写图片描述
  2. 上面的简单用法,以及源码在哪里已经交代了,后面就不提及了,下面简单的用http模块创建一个服务;http.createServer()
 `const server = require('_http_server');
     exports.createServer = function(requestListener) {
      return new Server(requestListener);
    };`//返回了一个实例化的 Server()方法;

//===========================demo
 const server = http.createServer((req, res) => {
     res.writeHead(200, {'Content-Type': 'text/plain'})
     res.end("hello");
 });

 server.listen(8000,"127.0.0.1");
  1. //启动Node,然后在浏览器上启动127.0.0.1:8000;就可以看到”hello”,这里的res.end();是响应后关闭,不然前端一直会请求,后台的响应到不了前端;看图对比
  2. 这里写图片描述
  3. 这里写图片描述
  4. 从图上我们可以清晰的看到,res.end();后-响应返回(关闭响应的那张图),具有完整的信息;
  5. 对请求的链接做条件判断,自己动动手输入,看看;
const server = http.createServer((req, res) => {
    if(req.url == "/"){
        console.log(req.method);//GET
        res.writeHead(200, {'Content-Type': 'text/plain'})
         res.end("hello");
    }else if(req.url == "/index"){
        res.writeHead(200, {'Content-Type': 'text/plain'})
         res.end("hello index");
         //http://127.0.0.1:8000/index
    }else{
        res.writeHead(404, {'Content-Type': 'text/plain'})
         res.end("404 Not Found");
    }

 });

 server.listen(8000,"127.0.0.1");
 6. 如果要区别对待Http method,可以根据 request.method 判断(看上面req.method)。至此,Http module在此场景下的短板显露无疑。这个时候express模块就很好了,有兴趣的自己看,后面有时间会看看源码,做做demo;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值