1、path模块
path 模块提供了 操作路径 的功能,较为常用的几个 API:
API | 说明 |
---|---|
path.resolve | 拼接规范的绝对路径 |
path.sep | 获取操作系统的路径分隔符 |
path.parse | 解析路径并返回对象 |
path.basename | 获取路径的基础名称 |
path.dirname | 获取路径的目录名 |
path.extname | 获得路径的扩展名 |
代码演示
// 导入 fs 模块 const fs = require('fs') // 导入 path 模块 const path = require('path') // 写入文件 // fs.writeFileSync(__dirname + '/index.html', 'love') console.log(__dirname + '/index.html') //=>D:DesktopNodecode 4-path/index.html // resolve 解决问题 拼接绝对路径 // 第一参数我们给绝对路径,第二个参数我们给相对路径 ./跟不要写效果是一样的 console.log(path.resolve(__dirname, './index.html')) //=>D:DesktopNodecode 4-pathindex.html console.log(path.resolve(__dirname, 'index.html')) //=>D:DesktopNodecode 4-pathindex.html console.log(path.resolve(__dirname, '/index.html', './test')) //=>D:index.html est // sep 获取路径分隔符 console.log(path.sep) //=> window linux / // parse 方法 __filename '全局变量' console.log(__filename) //=>__filename保存了文件的绝对路径 //=>D:DesktopNodecode 4-path 1-path.js // 解析路径 let str = 'D:\Desktop\Node\code\04-path\01-path.js' console.log(path.parse(str)) // 获取路径基础名称 获取文件名的 console.log(path.basename(str)) // 获取路径的目录名 获取文件夹路径 console.log(path.dirname(str)) // 获取路径的拓展名 获取文件扩展名 console.log(path.extname(str))
2、HTTP协议
2.1、概念
HTTP(hypertext transport protocol)协议;中文叫 超文本传输协议
2.2 协议
双方必须共同遵从一组约定 本质就是约定
2.3 HTTP协议
规定了客户端与服务器之间进行通信时所遵守的传输格式
http协议采用了请求/响应的交互摸性(请求报文/响应报文)
2.4 HTTP 报文
Fiddler安装
然后都点击确定 在重启就可以使用了
监听所有浏览器请求
2.5 HTTP 请求报文
2.5.1HTPP的请求行组成
请求方法(get、post、put/patch、delete等)
请求 URL[Uniform Resource Locator](统一资源定位器)本身也是一个字符串
例如:http://www.baidu.com/index.html?a=100&b=200#logo
http: 协议 (https、ftp、ssh等)
www.baidu.com 域名
80 端口号
/index.html 路径
a=100&b=200 查询字符串
#logo 哈希 (锚点链接)
HTTP协议版本号
2.5.2 HTTP 请求头
格式:『头名:头值』 键值对组成的
常见的请求头有:
请求头 | 解释 |
Host | 主机名 |
Connection | 连接的设置 keep-alive(保持连接);close(关闭连接) |
Cache-Control | 缓存控制 max-age = 0 (没有缓存) |
Upgrade-Insecure-Requests | 将网页中的http请求转化为 https 请求(很少用)老网站升级 |
User-Agent | 用户代理,客户端字符串标识,服务器可以通过这个标识来识别这个请求来自哪个客户端 ,一般在PC端和手机端的区分 |
Accept | 设置浏览器接收的数据类型 |
Accept-Encoding | 设置接收的压缩方式 |
Accept-Language | 设置接收的语言 q=0.7 为喜好系数,满分为1 |
Cookie | 后面单独讲 |
2.5.3 HTTP 的请求体
请求体内容的格式是非常灵活的,
(可以是空)==> GET请求,
(也可以是字符串,还可以是JSON)===> POST请求
例如:
-
字符串:keywords=手机&price=2000
-
JSON:{“keywords”:“手机”,“price”:2000}
2.6 HTTP 响应报文
2.6.1 HTTP 响应行
响应行:
HTTP/1.1 200 OK
HTTP/1.1:HTTP协议版本号
响应状态码: 200
还有一些状态码,参考:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status
响应状态描述: OK
2.6.2 HTTP 响应头
Cache-Control: 缓存控制 private 私有的,只允许客户端缓存数据
Connection : 链接设置
Content-Type : text/html;charset=utf-8: 设置响应体的数据类型以及字符集,响应体为html,字符集utf-8
Content-Length: 响应体的长度,单位为字节
2.6.3 HTTP 响应体
响应体内容的类型是非常灵活的,常见的类型有 HTML、CSS、JS、图片、JSON
3. 创建HTTP 服务
3.1 IP的作用