前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >读书笔记-《了不起的node.js》- HTTP

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

作者头像
用户3258338
发布2019-07-19 17:44:43
5780
发布2019-07-19 17:44:43
举报
文章被收录于专栏:女程序员的日常_Lin

你若安好,便是晴天

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 女程序员的日常 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档