NodeJS003- NodeJS的path模块与Http模块

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:DesktopNodecode4-path/index.html

// resolve 解决问题  拼接绝对路径
// 第一参数我们给绝对路径,第二个参数我们给相对路径 ./跟不要写效果是一样的 
console.log(path.resolve(__dirname, './index.html')) //=>D:DesktopNodecode4-pathindex.html
console.log(path.resolve(__dirname, 'index.html')) //=>D:DesktopNodecode4-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:DesktopNodecode4-path1-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的作用