Node-3.构建Web应用(一)

本文详细介绍了NodeJS构建Web应用的基础功能,包括请求方法(GET, POST等)、路径解析、查询字符串处理、Cookie与Session的概念及影响、缓存机制、以及Basic认证。文章深入探讨了Cookie的性能优化策略,Session与Cookie的区别,以及Session的实现和安全问题。此外,还讨论了如何利用缓存提升Web应用性能,并讲解了Basic认证的工作原理及其安全性考虑。" 111543508,10325570,Java多线程:从future错误到线程池实践,"['Java多线程', '并发编程', '线程池设计', '异常处理机制']
摘要由CSDN通过智能技术生成

NodeJS构建Web应用(一)

基础功能

对于Web应用而言,在具体的业务中,客户端和服务器端发送报文,服务器解析报文分析请求头,我们经常都需要:

  • 判断请求方法
  • 解析URL的路径
  • 解析URL上的查询字符串
  • Cookie的解析
  • Session(会话)的处理
  • Basic认证
  • 解析表单数据
  • 对任意格式的文件上传处理

请求方法

Web应用中,常见的请求方法是GETPOST,除此之外,还有HEADDELETEPUTDELETE等方法。
请求方法存在报文的第一行的第一个单词。

GET /path?foo=bar HTTP/1.1

服务器一般只需要处理GET和POST两类请求, 但是在RESTful类Web服务中请求方法决定资源的操作行为
PUT代表新建一个资源;
POST表示要更改一个新资源;
GET表示查看一个资源;
DELETE表示要删除一个资源。
可以通过请求方法来决定响应行为,如:

function (req, res) {
  switch (req.method) {
  case 'POST':
    update(req, res);
    break;
  case 'DELETE':
    remove(req, res);
    break;
  case 'PUT':
    create(req, res);
    break;
  case 'GET':
  default:
    get(req, res);
  }
}

路径解析

处理请求有时候需要根据路径来进行处理。
路径一般会存在于报文的第一行第二部分

GET /path?foo=bar HTTP/1.1

HTTP_Parser将报文路径解析为req.url。一般而言,完整的URL地址是如下这样的:

http://user:pass@host.com:8080/p/a/t/h?query=string#hash

客户端代理(浏览器)会将这个地址解析成报文,将路径和查询部分放在报文第一行。需要注意的是,hash部分会被丢弃,不会存在于报文的任何地方。

最常见的根据路径进行业务处理的应用就是静态文件服务器,它会根据路径去查找磁盘中的文件,然后将其响应给客户端,如下:

function (req, res) {
  var pathname = url.parse(req.url).pathname;
  fs.readFile(path.join(ROOT, pathname), function (err, file) {
    if (err) {
      res.writeHead(404);
      res.end('找不到相关文件。- -');
      return;
    }
    res.writeHead(200);
    res.end(file);
  });
}

另一种比较常见的分发场景是根据路径来选择控制器,他将路径为控制器和行为的组合,无需额外配置路由信息,如下:

/user(user的控制器)/addage(行为是添加)/10(参数)

后台的会匹配到对应的controller,然后再匹配到对于的控制器行为,剩余值作为参数

查询字符串

查询字符串位于路径之后,在地址栏中路径后的 “?foo=bar&baz=val” 字符串就是查询字符串。这个字符串会跟随在路径后,形成请求报文首行的第二部分。这部分内容经常需要为业务逻辑所用,Node提供了 “querystring” 模块用于处理这部分数据,如下所示:

var url = require('url');
var querystring = require('querystring');
var query = querystring.parse(url.pa
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值