创建服务器基础知识
http.creatServer()创建服务器方法
req 保存请求相关信息
req 方法
req.method 获取请求方式
req. url 获取请求地址
req.headers 获取请求报文 // req.headers['想要查询的值']
res响应相关信息
res方法
res.wirteHead(状态码值,{对象}) 书写HTTP状态码头部
{对象参数} content-type :内容类型;charset(文字编码)
URL
URL的组成
传输协议://服务器ip或域名:端口/资源所在位置标识
本地域名 localhost
本地IP 127.0.0.1
HTTP
HTTP请求方式
GET 请求数据
POST 发送数据
响应报文
1.HTTP状态码
200 请求成功
404 请求的资源没有被找到
500 服务器端错误
400 客户端请求有语法错误
2.内容类型
text/plain 纯文本
text/html
text/css
application/javascript
image/jpeg
application/json
HTTP请求与响应处理
GET请求参数
地址栏中传输
url.parse(要解析的url地址,将查询参数解析成对象形式) 解析url
解析后抽离其中 query返回键值对对象 pathname返回地址
POST请求参数
post参数获取 需要data事件(当开始传递参数的时候触发事件,用于拼接字符串,获取参数)和end事件(当参数传递结束后触发事件,用以转换参数格式并输出)
POST参数 一次接收不完 需要定义一个字符串拼接
使用querystring系统模块 将获取的post参数转换为对象格式
静态资源获取
目标:用户请求路径转换为本地存储路径 ()
做法:引入url地址解析模块,ulr.parse(req.url)获取请求路径
调用path路径模块.,path.join('__dirname','父文件',ulr.parse(req.url))
调用fs系统模块,fs.readfile(获得的真实存储路径,(error,result)=>{})
同步API
当前API执行完成后,再执行下一个API
可以从返回值中拿到API执行的结果
执行顺序 从上往下依次执行 前面代码会阻塞后面代码的执行
异步API
当前API执行不会阻塞后续代码的执行
使用回调函数获得结果
执行顺序 不会等待API执行完成后再向下执行代码
异步编程 promise
Promise 解决Node.js 异步编程中回调地狱的问题
创建promise实例对象,返回结果为一个回调函数 回调函数参数为resolve reject
异步执行成功调用 resolve 失败调用reject 返回值为promise对象
接受时 .then(()=>{}输出正确信息) .catch(()=>{}输出错误信息)
ES7新增 异步函数
普通定义函数前面加上 async关键字 就变成了异步函数
异步函数默认的返回值为promise对象
throw关键字 错误信息 //后面代码不执行
await 关键字
后跟promise对象
暂停异步函数的执行,等待promise对象执行完成后再向下执行
只出现在异步函数中
不再需要返回值