知识点
Http 状态码
- 101 websocket 双向通信
- 200 成功 204 没有响应体 206 断点续传
- 301(永久重定向) 302(临时重向) 304(缓存)只能服务端设置
- 401 (没登录没有权限) 403 (登录了没权限) 404 405(请求方法不存在、不支持,比如说发请求,服务器只支持get、post,但是我发了一个delete)
- 502 负载均衡挂了 500服务器挂
请求方法 RestfulApi
根据不同的动作 做对应的处理
- get 获取资源
- post 新增资源
- put 上传文件 修改
- delete 删除资源
- options 跨域出现 (复杂请求时出现) 只是get / post 都是简单请求 + 自定义的header
传输数据
请求行 url
请求头 自定header
请求体 提交的数据
响应行 状态码
响应头 可以自定义
响应体 返还给浏览器的结果
概念
通过node实现一个http服务,都是通过核心模块提供(http模块)
1 | const http = require('http'); |
每次服务端代码发生变化 都需要重启服务
可以安装nodemon node的监视器 监视文件变化的
sudo npm install nodemon -g 使用: nodemon 文件名(可以增加配置文件)
server
新建文件 1.http.js
如果端口被占用了 自动+ 1
1 | const http = require('http'); |
图解
如果别人请求我,我需要去解析请求
1 | const http = require('http'); |
1 | // 一个完整的url |
client
新建文件 2.client.js
中间层
这里相当于是服务端,向1.http.js中的 localhost:3000发送请求
request
get
1 | const http = require('http') |
Run Code运行 发送成功 在3000端口看到接收请求
get方法没有请求体
request 发送请求体
1 | // 1.http.js |
1 | // 1.client.js |
数据传输
常见格式
1) json字符串 {a:1}
2) 表单格式 a=1&b=2 如test.form.html文件
3) 文件格式 图片 formData
4) 传递是字符串
所以需要告诉服务端传过去的数据类型,在header里设置
1 | // 1.client.js |
1 | // 1.server.js |
表单格式
1 | <!-- test.form.html --> |
上面讲的都是怎么去通信,但实际上不可能你发送给服务器什么,服务器就返还给你
客户端访问服务器有2种情况 1、请求别人的服务器 自己写个文件去访问别人服务器;2、我去对服务器要资源(静态资源)
node 适合 I/O 密集 像web 的网站,主要是 想要html服务器返回给你html,想要js,服务器返回给你js,它主要的操作就是I/O,所以这样的功能,node的性能比较高
别人客户端访问我 我服务器可以返回什么:
1) 服务器可以返回静态资源 3.static.js
2) 我的服务器可以返回动态的资源 接口
3) 访问别人的服务器 把别人的服务的结果格式化后返回去 这就是所谓的中间层 或者爬虫
静态资源
新建 index.html 、style.css、3.static.js
1 | <!--index.html --> |
1 | // style.css |
1 | // 3.static.js |
分析:浏览器 访问index.html(html加载css) -> style.css,客户端访问服务器 想要html 服务器就把html读出来,返回去,fs的读取操作。
服务端 nodemon 3.static.js
客户端:浏览器 http://localhost:3000/index.html
优化 4.static.js
1 | const http = require('http'); |