服务端基础概念
URL
创建web服务器
req请求
res响应
HTTP协议
请求方式
打开浏览器控制台中有两个输出
点击提交
post发送完,表单默认的行为跳转是get方式
这个时候输入网址打印出get,点击表单中的提交打印出的是post
请求地址
获取到了一个/
根据请求地址不同进行响应
req.header
获取具体信息
响应报文
为什么不显示数字呢
2、内容类型
纯文本的响应方式
但如果改成中文会有一堆乱码
HTTP请求和响应处理
GET
在地址栏中,可以通过req.url获得
可以用字符串截取
也可以用内置模块,
转换成对象
利用解构
把之前的req.url改成pathname来做判断
POST请求参数
转换成对象,不能用url(处理请求地址的)
用处理请求参数模块
不知道算不算成功
路由
静态资源
要通过req.url获取到用户的请求路劲defauthtml,转换成真实的服务器路径,读取内容。再返回给客户端
不希望他带参数,所以用parse方法
——dirname两个下划线拼起来
注意标点符号
出错处理
node.js异步编程
同步API 异步API
fs是用函数拿到的,前两个通过的是返回值
before wait last after
before after wait last
这就是异步api
异步api不会阻塞后续代码的执行,所以2s后才有msg
回调函数
callback的实参是函数,就是回调函数,调用传递匿名函数,实际在函数内部调用
callcack可以传递参数
如果getdata内部有异步操作,执行完就能调用callback(),把异步api的结果通过参数传递给callback();就能拿到结果了
如果嵌套更多层,就成了不可维护代码,回调地狱
Promise
链式编程
ES7中新增了
异步函数默认的返回值是promise方法
抛出错误
awaite关键字
只出现在异步函数中,await promise可以暂停异步函数 等待promise对象返回结果后再向下执行函数
这样就不用回调函数了
promisify:
改造现有异步函数api,让其返回promise对象,从而支持异步函数语法