美文网首页
nodejs-getpost提交http请求响应

nodejs-getpost提交http请求响应

作者: Mcq | 来源:发表于2020-05-14 21:58 被阅读0次

  • 理解表单使用post方式提交数据时后端接收数据的方法
  • 理解表单使用get方式提交数据时后端接收数据的方法
  • 理解post和get的区别
  • 记住请求报文的组成
  • 记住响应报文的组成

fs模块: 进行目录和文件操作

readFile: 读文件

writeFile: 覆盖写文件

appendFile: 追加写文件

readdir: 遍历目录

1. post表单提交

1550024077433.png
  1. 表单提交的必要条件
  • 必须有form标签
    • action:表单数据提交的位置,必须是一种后端技术来接收
    • method: 表单提交的方式,post(常用)、 get(默认)
  • 每个表单域都要有name属性和值
  • 必须要有submit按钮
  1. 后端接收 --- post方式
//1. 监听data事件,循环接收post表单提交的数据
let str = '';
//参数1: 事件类型,data代表接收客户端数据事件
//参数2: 接收时触发的回调函数
//  使用post提交的表单数据可能会非常大,需要切割成一个个的小数据块进行接收
req.on('data', (chunk) => {
    str += chunk;
})
//2. 监听end事件,接收完成后处理接收到的数据
//参数1: 事件类型,end代表接收数据完成时触发的回调函数
//参数2: 完成后触发的回调函数,在该函数中可以处理接收到的数据
req.on('end', () => {
    console.log(str);
})

案例: 接收表单提交的用户和密码

  1. 创建index.html页面,设置表单
1550022255616.png

注意表单提交所需的三点。

  1. 创建服务器显示表单页
1550024154187.png
  1. 增加 /postData 的监听,来接收表单提交的数据

先用data事件来接收表单提交的数据,再用end事件来处理接收好的数据

接收到的str的结果: ==username=aaa&userpwd=123==

username 和 userpwd 是表单name的值

1550024200779.png

username=zs&userpwd=123&...

username 和 userpwd 是表单中name的值

zs 和 123 是自己填写的值

2. 每种表单域提交的方式

表单标签: form 、 ==input 、 select 、 textarea==

==表单提交的实际上是每个域的value值==

特殊:

select - option标签

​ name属性是设置在select标签中

​ value属性是设置在option标签中

​ 如果在option标签中没有value,则会提交 option标签中的内容,但是强烈建议使用value属性

textarea 标签

​ name属性设置标签中

​ value就是两个标签之间的内容

1550026086743.png

3. get提交表单数据

get方式提交表单数据时,数据会以字符串方式显示在地址栏

显示方式: key1=value1&key2=value2&key3=value3&...

示例: http://127.0.0.1:8888/getData?username=weixiaobao&userpwd=123123

? 之后的部分就是表单提的数据,是一种 key=value&key=value的形式

key是表单域中name的值

要解析url地址可以使用url模块,该模块是一个系统模块

案例: url功能测试

1550027049545.png

执行结果:

1550027075186.png

重点:

pathname: 请求的url地址

query: ?之后的参数。 当parse方法设置参数2为true时,?之后的参数会被解析为对象形式

案例: 表单使用get方式提交数据

  1. 设置表单
1550027841076.png
  1. 创建服务器显示 index.html 页面


    1550027907192.png
  1. 增加 /getData 的监听,来接收表单提交的数据
1550027939990.png

4. get和post的区别

==通过URL地址栏来区分post和get==

  1. 提交方式
  • get会将数据显式的拼接到url地址栏中 (字符串)

    例如: /getData==?==id=10001==&==username=heiheihei==&==passwd=123456&key=value....
    key=value方式传参,多个参数之间使用&符号隔开

       id、username、passwd等等(键/key)都是表单域的name值
      
       1、heiheihei、123456等等(值/value)都是表单域的value值
    
  • post不会显示出来

  1. 传递数据量大小
  • post传递的数据量较大,理论上是无上限的

  • get会受到浏览器的地址栏的限制。有的是2k(IE6),有的是8K(chrome)

  1. 应用范围不一样
  • post在绝大多数情况下都使用在表单提交中。
  • get的应用范围比较广,只要能进行页面跳转,就能传递数据。在a标签的href中,location.href中等都能使用get方式。

5. 发表评论

  1. 保证表单能够正常提交

form: action (指定表单数据提交的位置) method (提交方式 post)

每个表单域都要有name属性和值

必须有submit按钮来提交表单

1550030463702.png
  1. 增加 /addpost 监听,在该分之中接收表单提交的数据
1550030752670.png

6. http协议

6.1 http协议概述

协议: 就是事先的一种约定、规则、规范、标准。(租房合同、工作合同)。

HTTP协议(HyperText Transfer Protocol ):超文本传输协议,客户端(浏览器端)与WEB服务器端之间的交互协议。当浏览器和服务器进行数据交换时,html文件、图片、CSS、JS等都是基于HTTP协议进行传输的。

HTTP协议有两个版本: 1.0 和 1.1,目前使用的基本都是1.1

特点:
通常是基于 B/S 结构软件的。
无连接: 浏览器向服务器发送一次请求,服务器响应一次,链接即结束。
无状态: 无记忆。 服务器不能记住哪个浏览器访问过。

HTTP协议主要分为两大部分:
请求: 访问服务器的任何一个文件都是一次请求
响应: 服务器处理请求,将结果返回给浏览器。

6.2 请求协议/请求报文

请求分为3个部分: 请求行 请求头 请求主体

  • 请求行: 请求方式、请求URL地址、协议版本号

  • 请求头: 主机域名,端口号,客户端(浏览器)的信息等

  • 请求主体: 发送给服务器的数据,get和post都会通过请求主体将数据发送给服务器

    可以使用Chrome tools 或者 firebug 来查看请求和响应的信息(F12)

主要请求项:

  • host: 主机名和端口号,80端口默认不显示
  • accept:可接受的程序/文件类型
  • accept-encoding: 可接受的压缩类型
  • accept-language: 可接受的语言类型

案例1: 访问 127.0.0.1:3000/index,查看请求行和请求头

1550031744937.png

打开F12

1550031796127.png 1550031927884.png

案例2: 使用get方式提交数据,查看请求行、请求头和请求体

案例3: 使用post方式提交数据,查看请求行、请求头和请求体

6.3 响应协议/响应报文

响应也分为3部分: 响应行 响应头 响应主体

  • 响应行: 协议版本号、响应结果状态码

  • 响应头: 主要是服务器端的信息

  • 响应主体: 就是从服务器返回给客户端的数据

主要响应项:

  • content-type: 响应内容类型, content-type:text/html,服务器告诉浏览器,返回的这部分数据是文本类型,使用html方式来解析即可。
  • content-length: 响应内容的长度 ,content-length:336, 从服务器返回给浏览器的数据总长度为336字节

6.4 多次请求和响应

1549973295308.png

6.5 常见状态码

常见的状态码如下:

200 ok ----- 请求成功

302 redirect|Found ----- 重定向

304 not modified ----- 未修改

403 forbidden ----- 禁止访问 (没有权限访问)

404 Not Found ----- 未找到页面

500 internal server error ----- 服务器内部错误 (可能是服务器本身有问题,或者代码错的太离谱)

6.6 req和res对象

req(request):请求对象

url: 保存了浏览器的url地址

method: 请求方式

headers: 请求头信息

res(response):响应对象

setHeader(): 设置响应头信息

writeHeader(): 设置响应头信息和状态码

write(): 设置响应体

end(): 将响应行、响应头、响应体一次性返回给浏览器

相关文章

  • nodejs-getpost提交http请求响应

    理解表单使用post方式提交数据时后端接收数据的方法 理解表单使用get方式提交数据时后端接收数据的方法 理解po...

  • 表单提交和 AJAX 请求之间的区别

    表单提交,以get请求为例: 提交表单会直接创建一个http请求,向服务器发送请求数据,服务器会响应请求。 htt...

  • java实践:tomcat_简化版_服务调用_协议(不含网络)

    一、HTTP协议(请求行和响应行) 1. http请求:请求行 2. http响应:状态行 二、请求对象和响应对象...

  • 网络教程

    http协议包括 请求协议:请求行、请求头、请求体 响应协议:响应行、响应头、响应体 servlet

  • http协议

    http协议包含内容 请求 请求头 请求行 请求正文 响应 响应头 响应行 响应正文image.png

  • Nginx笔记 2018-01-11

    request 在nginx中我们指的是http请求,一个http请求,包含请求行、请求头、请求体、响应行、响应头...

  • 如何根据已知且有规律的链接抓取网页,得到页面数据

    想到关于这个问题的解决方法首先想到的流程是:获取到http请求->提交请求->响应完成->获取request中的数...

  • HTTP入门

    目录 HTTP是什么HTTP请求HTTP响应如何用 Chrome 查看请求如何用 Chrome 查看响应如何使用 ...

  • 网络初探

    HTTP 超文本传输协议 请求,响应报文 链接建立流程 HTTP的特点 请求/响应报文 请求报文: 请求行:方法(...

  • 接口测试(一)

    http协议内容 请求请求头请求行请求正文 响应响应头响应行响应正文 请求正文数据格式键值对XMLJSON 熟悉项...

网友评论

      本文标题:nodejs-getpost提交http请求响应

      本文链接:https://www.haomeiwen.com/subject/iddyfctx.html