1.1 请求与响应
请求与响应模型
开发者工具左栏请求、右栏响应
如何发送请求
-
方法:
用Chrome地址栏
用curl命令
-
概念
帮忙发送请求的工具叫做用户代理(User Agent)
如何做出一个响应
-
需要编程
Node.js 有一个 http模块可以做到
VSCode新建终端,运行
node server.js 8888
在cmder里curl一下该端口下的路径,VSCode中的终端会刷新
-
注意
这些代码就是服务器代码,一般放在服务器上。
path是不带查询参数的路径/x
query是查询参数的对象形式{a:'1'}
queryString是查询参数的字符串形式?a=1
pathWithQuery是带查询参数的路径,一般不用
request是请求对象
response是响应对象
代码逻辑
-
语法
-
逻辑
每次收到请求都会把代码执行一遍。
用 if else 判断路径,返回不同内容。
如果是已知路径,一律返回200。
如果是未知路径,一律返回404。
Content-Type 表示内容的“类型/语法”
response.write() 可以填写返回的内容
response.end() 表示响应可以发给用户了
总结
-
服务器程序——上面例子
-
网页——
/路径 返回一个HTML内容
/x路径 返回一个CSS内容
/y路径 返回一个JS内容
-
注意——
URL里的后缀没用,/y.css 不一定是CSS内容
Content-Type才是决定文件类型的关键
1.2 HTTP
体系化学习
-
基础概念——请求、响应
-
如何调试——用Node.js,可以用log/debugger
-
查资料——用Node.js,看Node.js文档
-
标准——HTTP规格文档:RFC2612等
HTTP基础概念
请求
请求动词 路径+查询参数 协议名/版本Host: 域名或IPAccept: text/htmlContent-Type: 请求体的格式回车请求体(即上传内容)
三部分:请求行、请求头、请求体
请求动词 GET / POST / PUT / PATCH / DELETE等
请求体在GET请求中一般为空
大小写不敏感
RFC 2612 第五章
- GET演示——
- POST演示——
响应
协议名/版本 状态码 状态字符串Content-Type: 响应体的格式回车响应体(下载内容)
三部分:状态行、响应头、响应体
常见的状态码:
RFC 2612 第六章
- 演示——
响应体——
用curl构造请求
开启server的情况下
curl -v http://127.0.0.1:8888
设置请求动词
-X POST
设置路径和查询参数
直接在url后面加
设置请求头
-H 'Name:Value'
或者
--header 'Name:Value'
设置请求体
-d '内容'
或者
--data '内容'
用Node.js读取请求
读取请求动词
request.method
curl分别发送GET、POST请求
在终端中分别得到请求动词GET、POST
读取路径
request.url
路径,带查询参数
path
纯路径,不带查询参数
query
只有查询参数
读取请求头
request.headers['Accept']
读取请求体
用Node.js设置响应
设置响应状态码
response.statusCode = 200
将状态码200改为201
用curl请求,得到状态码也是201
设置响应头
response.setHeader('Content-Type','text/html');
设置响应体
response.write('内容')
可追加内容:
服务器
服务器设置步骤
-
在阿里云购买一个服务器
-
把本地的公钥复制到阿里云的 ~/.ssh/authorized_keys
先得到本地公钥
echo '本地公钥' >> ~/.ssh/authorized_keys
-
在本地用
ssh root@实例ip
来远程操作云机器访问服务器根目录下文件
-
可以在hosts里给实例ip取名
记事本以管理员身份打开hosts,将实例ip取名为aliyun1
-
退出云机器,输入exit。
如何防止ssh卡住
方法1——
在 /etc/ssh/ssh_config 最后加上
Host * ServerAliveInterval 30
方法2——
可以用两次echo搞定(注意是在本地而不是云机器上)
echo "Host *" >> /etc/ssh/ssh_configecho " ServerAliveInterval 30" >> /etc/ssh/ssh_config
创建应用账户
Linux的root账户拥有最高权限,防止被攻克,所以创建新的应用账户。
步骤:
-
adduser river
-
Enter new UNIX password: 输入密码
-
再次输入密码
-
一直回车,结束后运行命令——
mkdir /home/river/.sshcp ~/.ssh/authorized_keys /home/river/.ssh/chmod 755 /home/river/.ssh/authorized_keyschown river:river /home/river/.ssh/authorized_keys
-
最终可以实现
ssh river@aliyun1
sudo
给river添加sudo权限(在root中操作)
adduser river sudo
sudo是什么?
全称 super user do,类似于 windows的“以管理员身份运行”
在使用river账户时,如果遇到特殊操作,在前使用sudo,请出root
需要输入river用户的密码
sudo !!
用sudo执行上一句的命令
安装 Node.js 14
步骤
curl -sL https://deb.nodesource.com/setup_14.x | sudo bash -sudo apt-get updatesudo apt-get install -y nodejsnode -vnpm -vnpx -v
安装git
步骤
sudo apt install git
提交使用git -m "xxx"
学习vim
部署应用
1.克隆nodejs-test
clone https://github.com/RiverCui/nodejs-test.git
2.在nodejs-test文件中新建一个log
cd nodejs-testtouch log
3.启动命令
node server.js 8888 > log 2>&1 &
该进程已在后台运行,id为19405,curl远程机器的本地端口:
运行下面命令就可以关掉进程
kill -9 id
4.把启动命令做成 start 文件
touch startecho 'node server.js 8888 > log 2>&1 &'chmod +x ./start
现在可以直接运行start了
./start或sh ./start
因为start是通过node运行的,所以这时可以通过
killall node
关掉所有node进程
启动命令后,使用阿里云IP+端口号就可以在页面访问
如何重启应用
ssh frank@实例ipcd nodejs-test
拉取最新代码
git pull
启动
killall nodesh ./start
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!