• http请求和响应格式说明,http的get和post请求方式说明,http的请求体body的几种数据格式


    HTTP内容说明

    请求报文

    一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成,
    请求报文的一般格式

    <request-line>
    <headers>
    <blank line>
    <request-body>
    
    • 1
    • 2
    • 3
    • 4

    1、第一行必须是一个请求行(request-line),用来说明请求类型,要访问的资源以及所使用的HTTP版本
    2、紧接着是一个请求头(header),用来说明服务器要使用的附加信息
    3、紧接着是一个空行(blank line)
    4、紧接着是请求体(request-body)

    request请求,例如:

    GET /562f25980001b1b106000338.jpg HTTP/1.1
    Host    img.mukewang.com
    User-Agent    Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36
    Accept    image/webp,image/*,*/*;q=0.8
    Referer    http://www.imooc.com/
    Accept-Encoding    gzip, deflate, sdch
    Accept-Language    zh-CN,zh;q=0.8
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    请求行(request line)

    请求行由请求方法字段URL字段HTTP协议版本字段3个字段组成,它们用空格分隔
    例如:GET /index.html HTTP/1.1

    • GET说明请求类型为GET,
    • /index.html为要访问的资源,
    • 最后一部分说明使用的是HTTP1.1版本

    请求头部(header)

    紧接着请求行(即第一行)之后的部分,用来说明服务器要使用的附加信息

    从第二行起为请求头部,

    • HOST将指出请求的目的地.
    • User-Agent,服务器端和客户端脚本都能访问它,它是浏览器类型检测逻辑的重要基础,该信息由你的浏览器来定义,并且在每个请求中自动发送等等

    空行

    即使第四部分的请求数据为空,也必须有空行。通知服务器以下不再有请求头

    请求数据

    请求数据不在GET方法中使用,而是在POST方法中使用,因为上面的举例中是使用的GET,所以并没有请求数据

    请求数据举例

    举例1

    有请求数据的举例如下:
    在这里插入图片描述
    与请求数据相关的最常使用的请求头是

    • Content-Type:指示响应的内容,这里是text/html表示HTML网页,浏览器就是依靠Content-Type来判断响应的内容是网页还是图片,是视频还是音乐。浏览器并不靠URL来判断响应的内容,所以,即使URL是http://example.com/abc.jpg,它也不一定就是图片

      例如:Content-Type: text/html;charset=utf-8表示响应类型是HTML文本,并且编码是UTF-8,Content-Type: image/jpeg表示响应类型是JPEG格式的图片;

    • Content-Length

    举例2
    POST / HTTP1.1
    Host:www.wrox.com
    User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
    Content-Type:application/x-www-form-urlencoded
    Content-Length:40
    Connection: Keep-Alive
    
    name=Professional%20Ajax&publisher=Wiley
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    第一部分:请求行,第一行明了是post请求,以及http1.1版本。
    第二部分:请求头部,第二行至第六行。
    第三部分:空行,第七行的空行。
    第四部分:请求数据,第八行。

    响应报文

    HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文

    <status-line>
    <headers>
    <blank line>
    [<response-body>]
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    1、第一行必须是一个状态行(status-line)
    2、紧接着是一个响应头(header)
    3、紧接着是一个空行(blank line)
    4、紧接着是响应体(response-body)

    response响应举例如下:

    HTTP/1.1 200 OK
    Date: Fri, 22 May 2009 06:07:21 GMT
    Content-Type: text/html; charset=UTF-8
    
    
          
          
                
          
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    状态行(status-line)

    状态行:由HTTP协议版本号, 状态码, 状态消息 三部分组成
    第一行为状态行,

    1. (HTTP/1.1)表明HTTP版本为1.1版本,
    2. 状态码为200,
    3. 状态消息为(ok)

    消息报头(header)

    第二行和第三行为消息报头,

    1. Date:生成响应的日期和时间;
    2. Content-Type:指定了MIME类型的HTML(text/html),编码类型是UTF-8

    空行(blank line)

    消息报头后面的空行是必须的

    响应正文(response-body)

    空行后面的html部分为响应正文。

    HTTP请求方式

    GET

    GET /test/?!name=Professional?abc!&publisher=?abc HTTP/1.1
    Accept: */*
    Accept-Language: zh-cn
    Accept-Encoding: gzip, deflate
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
    Host: 127.0.0.1
    Connection: Keep-Alive
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    注意最后一行是空行

    说明:

    1. 第1部分是请求行,说明了该请求是一个GET请求。该行的第二部分,用来说明请求的是什么,该行的最后一部分说明使用的是HTTP1.1版本。
    2. 第2部分请求头,HOST将指出请求的目的地,User-Agent,服务器端和客户端脚本都能访问它,它是浏览器类型检测逻辑的重要基础。该信息由你的浏览器来定义,并且在每个请求中自动发送,Connection通常将浏览器操作设置为Keep-Alive,而没有响应后立即close这个连接。
    3. 第3部分是空行,即使不存在请求主体,这个空行也是必需的。

    GET提交,请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,多个参数用&连接

    如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如: %E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。

    POST

    POST /text.html HTTP1.1
    Host:www.wrox.com
    User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
    Content-Type:application/x-www-form-urlencoded
    Content-Length:40
    Connection: Keep-Alive
    
    name=Professional?abc!%20Ajax&publisher=?abc!
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    把提交的数据放置在是HTTP包的包体中

    说明:

    1. 请求行开始处的GET改为POST,以表示不同的请求类型。
    2. Content-Type说明了请求主体的内容是如何编码的,浏览器始终以application/x-www-form-urlencoded的格式编码来传送数据,这是针对简单URL编码的MIME类型.Content-Length说明了请求主体的字节数。
    3. 最后请求主体.名称-值对的形式

    区别

    GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如上. POST方法是把提交的数据放在HTTP包的Body中.

    GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.

    GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。

    GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码.

    http的请求体body的几种数据格式

    multipart/form-data

    以表单形式提交,主要是上传文件用它
    在这里插入图片描述

    application/x-www-from-urlencoded

    以键值对的数据格式提交
    在这里插入图片描述

    raw

    选择text,则请求头是: text/plain
    选择javascript,则请求头是: application/javascript
    选择json,则请求头是: application/json (如果想以json格式传参,就用raw+json就行了)
    选择html,则请求头是: text/html
    选择application/xml,则请求头是: application/xml

    在这里插入图片描述

    binary

    相当于Content-Type:application/octet-stream,从字面意思得知,只可以上传二进制数据,通常用来上传文件,由于没有键值,所以,一次只能上传一个文件。

    在这里插入图片描述

    postman中 Params和Body的区别

    Params 它会将参数放入url的?后面提交到后台(带到请求的接口链接里)

    Body是放在请求体里面
    在这里插入图片描述

    参考:https://www.cnblogs.com/ranyonsue/p/5984001.html

    参考2:https://blog.csdn.net/qq_41063141/article/details/101505956

  • 相关阅读:
    Jmeter接口测试
    [5]http1、2、3的区别
    JAVA--word等文件转PDF工具类
    精智达在科创板过会:拟募资6亿元,2022年前三季度收入约3亿元
    Linux篇16进程信号第二部分
    使用 Python 和蒙特卡罗计算未来股价走势以及历史波动率和隐含波动率
    跨境电商去哪做好?东南亚六国电商情况一览
    腾讯待办是不是停了?能准时提醒待办事项的APP
    解除OU屏蔽(EBS检查无法直接查询解决)
    基于Vue+SpringBoot的城市桥梁道路管理系统 开源项目
  • 原文地址:https://blog.csdn.net/yyuggjggg/article/details/127930296