最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 请求和响应

    正文概述 掘金(RiverCui)   2021-02-23   638

    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('内容')

    可追加内容:

    请求和响应

    请求和响应

    服务器
    服务器设置步骤
    1. 在阿里云购买一个服务器

    2. 把本地的公钥复制到阿里云的 ~/.ssh/authorized_keys

      先得到本地公钥

      请求和响应

      echo '本地公钥' >> ~/.ssh/authorized_keys
      
    3. 在本地用ssh root@实例ip来远程操作云机器

      请求和响应

      访问服务器根目录下文件

      请求和响应

    4. 可以在hosts里给实例ip取名

      记事本以管理员身份打开hosts,将实例ip取名为aliyun1

      请求和响应

      请求和响应

    5. 退出云机器,输入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介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元