系统学习 HTTP
HTTP 到底是啥
体系化学习
必须学会什么
- 基础概念(有哪些是必会的,HTTP 有哪些基础概念呢?就两个,请求和响应)
- 如何调试(我们用的是 Node.js,可以用 log/debugger。通过 Node.js 来学习 HTTP,那我们的本质还是学习 HTTP,所以你不要在 Node.js 上花太多时间,你只要会怎么调试就行了)
- 在哪查资料(用的是 Node.js,看 Node.js 文档)
- 标准制定者是谁(HTTP 规格文档,RFC 2612 等)
体系化学习
- CRM 学习法
HTTP 基础概念
请求(Request Headers)
- 请求动词 路径加查询参数 协议名/版本
- Host:域名或 IP
- Accept:text/html
- Content-Type:请求体的格式
- 回车
- 请求体(也就是上传内容,可以是任意内容,只要你格式写了)
细节
- 三部分:请求行(1)、请求头(234)、请求体(6)
- 请求动词有 GET/POST/PUT/PATCH/DELETE 等
- 请求体在 GET 请求中一般为空
- 文档位于 RFC2612 第五章
- 大小写不敏感(随意)。js 大小写敏感
响应(Response Headers)
- 协议名/版本 状态码 状态字符串
- Content-Type:响应体的格式
- 回车
- 响应体(也就是下载内容)
细节
- 三部分:状态码、响应头、响应体
- 常见的状态码是考点,
- 文档位于 RFC2612 第六章
用 curl 构造请求,-v 是看过程,不要-v 也行
- curl -v http://127.0.0.1:8888
设置请求动词
- -X POST(写在-v 后面,注意大小写)
设置路径和查询参数
- 直接在 url 后面加
设置请求头
- -H 'Name:Value' 或者 --header 'Name:Value'
设置请求体
- -d '内容' 或者 --data '内容'
用 Node.js 读取请求
读取请求动词
- request.method
读取路径
- request.url 路径,带查询参数
- path 纯路径,不带查询参数
- query 只有查询参数
读取请求头
- request.headers['Accept']
读取请求体
- 比较复杂,后面再学
用 Node.js 设置响应
设置响应状态码
- response.statuCode=200
设置响应头
- response.setHeader('Content-Type','text/html');
设置响应体
- response.write('内容')
- 可追加内容。写两个及以上 response.write('内容'),它们可以拼接在一起。
curl 不是用来测试的,curl 是个浏览器,只不过它看不见东西
http 里面的路径没有./,只有/
本节内容讲了,什么是请求,什么是响应,如何用 node.js 造请求,如何用 curl 造请求,如何用 node.js 造响应。你会造请求、会造响应,你就可以了,你就是一个后端程序员了。
命令行 ssh frank2@aliyun1 退出 后面加 exit
sudo
给 frank2 添加 sudo 权限
- adduser frank sudo
sudo 是什么
- 全称 super user do
- 类似于 Windows 的[以管理员身份运行]
- 平时你不应该使用 root 账户,而是用 frank 账户
- 遇到特殊操作,就在前面加 sudo,请出 root
- 需要输入 frank2 的密码,不是 root 的密码
- 使用 CTRL+A 可以快速回到命令前面,CTRL+E 回到后面
- sudo !! 的意思是用 sudo 执行上一句命令
部署应用
下载代码
- git clone 仓库的 https 地址
启动应用
cd nodejs-testtouch log- 启动命令:
node server.js 8888 > log 2>&1 & - 把启动命令做成 start 文件
- 添加执行权限
chmod +x ./start - 运行
sh ./start得到一个进程号 pid tail log看 log 内容kill -9 pid可以关掉进程killall node可以关掉所有 node 进程
如何重启应用
上传代码
- 在本地改完代码
- git push
下载代码
ssh frank2@实例IPcd nodejs-testgit pullkillall node(忘了进程号就用这个,记下来的话就用kill -9 进程号)sh ./start- 重启完毕