首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

读书笔记-《了不起的node.js》- HTTP

你若安好,便是晴天

HTTP

HTTP协议建立在请求和响应的概念上,对应在Node.js中就是有http.ServerRequest和http.ServerResponse这两个构造器构造出来的对象。

今天我们通过一个简单的web服务器来认识一个HTTP:

首先创建一个项目,在根目录下创建一个package.json文件,内容如下:

代码语言:javascript
复制
{
  "name": "http-form",
  "version": "0.0.1",
  "description": "http test"
}

然后在终端npm install 一下,会输出一个空行,因为现在没有任何依赖。

然后就开始写我们主要的内容了,创建一个index.js文件,内容如下:

代码语言:javascript
复制

//querystring模块能将一个字符串解析成一个对象
var qs = require('querystring');
require('http').createServer(function(req,res){
  if('/'== req.url){
    res.writeHead(200,{'Content-Type':'text/html'});
    // 将响应写在一个数组中,之后拼接成字符串返回
    //form表单下的 button 按钮,如果不设置type默认为submit,会自动提交表单
    res.end([
    '<form method ="POST" action="/url">'
      ,'<h1>My Form</h1>'
      ,'<fileset>'
      ,'<label>Personal information</lable>'
      ,'<p>what is you name?</p>'
      ,'<input type="text" name="name"/>'
      ,'<p><button>Submit</button></p>'
    ,'</form>'
               ].join(''));  
  }else if('/url'== req.url && 'POST' == req.method){
  
    //node.js允许在数据到达服务器是就可以对其进行处理。因为数据是以不同的TCP包到达服务器的
    //创建一个空字符串接收数据,当end的时候,数据接收完全  
    var body ='';
    req.on('data',function(chunk){
      body += chunk;
    })
    req.on('end',function(){
      //表单内容经过编码 所以req.headers['content-type']应该是application/x-www-form-urlencoded
      res.writeHead(200,{'Content-Type':'text/html'});
                  res.end('<p>Content-Type: '+req.headers['content-type']+'</p>'
      +'<p>Data:</p><pre>'+body+'</pre>'+
      '<p>Your name is <b>'+qs.parse(body).name+'</b></p>');  
    })
  }else{
    //让代码更健壮
    res.writeHead(404);
    res.end('Not Found');

  }
}).listen(3000);

然后在终端执行:node index.js

然后在浏览器访问localhost:3000

输入name,提交之后:

在地址栏随便输入地址,结果如下

到这里,我们已经完成了第一个HTTP Web服务器。

之后我们要学习服务端API相对的HTTP客户端API。宝宝们,一起来coding……

愿我们有能力不向生活缴械投降---Lin

下一篇
举报
领券