深入Node.js技术栈 - 三.Web开发基础

78 阅读2分钟

1.web 服务基础

1.1 http 模块

createServer

监听主机和端口号

localhost:本质上是一个域名,通常情况下会被解析成127.0.0.1

127.0.0.1:回环地址(Loop Back Address),表达的意思其实是我们主机自己发出去的包,直接被自己接收;

  • 正常的数据库包经常 应用层 - 传输层 - 网络层 - 数据链路层 - 物理层 ;
  • 而回环地址,是在网络层直接就被获取到了,是不会经常数据链路层和物理层的;
  • 比如我们监听 127.0.0.1时,在同一个网段下的主机中,通过ip地址是不能访问的;

0.0.0.0:

  • 监听IPV4上所有的地址,再根据端口找到不同的应用程序;
  • 比如我们监听 0.0.0.0 时,在同一个网段下的主机中,通过ip地址是可以访问的;

请求对象 request

  • JSON 字符串格式转成对象类型,通过 JSON.parse 方法即可。
  • query 参数解析出来,用 const qs = require('querystring');
  • 对接收的数据设置编码:对于文本型,req.setEncoding('utf-8');对于视频、音频等类型,用binary
  • POST 请求的参数放在 body 里面;GET 请求的参数通过 URL 拼接

headers属性

  • accept-encoding:告知服务器,客户端(如浏览器)支持的文件压缩格式,比如js文件可以使用gzip编码,对应 .gz文件;浏览器可以直接将 .gz 转化为 js 文件。在 webpack 中可配置,当 js 文件多大时,压缩为 gzip 文件。

响应对象response

Content-type

用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件

菜鸟教程-HTTP content-type

返回头部信息,主要有两种方式:

  • res.setHeader:一次写入一个头部信息;
  • res.writeHead:同时写入header和status;
res.setHeader("Content-Type", "text/plain;charset=utf8");
res.writeHead(200, {
  "Content-Type": "text/html;charset=utf8"
});