• HTTP协议详解


    HTTP协议

    协议:就是规则。要求通信的双方必须严格遵守!

    HTTP协议简介

    • HTTP:(HyperText Transfer Protocol)超文本传输协议,是一个基于请求与响应模式的、应用层的协议,也是互联网上应用最为广泛的一种网络协议。

    • 特征:

      1. 支持客户端/服务器模式
      2. 简单快速
      3. 灵活
      4. 无连接
      5. 无状态

    URL格式

    • 概念:(Uniform Resource Locator)统一资源定位符。
    • 作用:在网络环境中,唯一的定义一个数据资源。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KAUElRpJ-1656214887485)(接口测试-第01天-课堂笔记.assets/image-20210707105756973.png)]

    • 协议:http。 规定数据传输的方式。
    • 域名(IP):在网络环境中找到主机。—— 用 😕/ 与协议隔分
    • 端口(port):(常省略)在网络主机上,标识一个进程(应用程序)—— 用: 与域名
    • 资源路径:标识网络资源(文件、图片、音视频、变量…)—— 用: / 与端口格分
    • 查询参数:传递给资源路径对应的数据。—— 用 ? 与资源路径隔分。 查询参数内部 用 & 隔分多个kv对

    练习

    请写出以下URL的各个组成部分。这个URL没有写出端口号,它的端口是什么?

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AuGN4ZCe-1656214887486)(接口测试-第01天-课堂笔记.assets/image-20210707110844053.png)]

    协议:http

    域名:www.itcast.cn

    端口号:8080( 不是默认,只不过网络 网络通信常用!)

    资源路径:/news/index.html

    查询参数:uid=123&page=1

    HTTP请求

    作用:

    • 客户端(app、浏览器),发送请求给服务器时,使用的协议 —— http请求协议。
    • 规定 发送给服务器的数据传输的语法格式。

    整体格式

    • **请求行:**http请求第一行。请求方法 (空格) URL (空格) 协议版本
    • **请求头:**语法格式:k :v
      • User-Agent:描述 请求发送端的 浏览器类型。
      • Content-Type:描述 请求体 的 数据类型!
    • **空行:**代表http请求头结束。
    • **请求体:**请求发送时携带的数据。数据类型 Content-Type 的值!
      • post 和 put 有请求体
      • get 和 delete 没有请求体

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wHT1XWMk-1656214887486)(接口测试-第01天-课堂笔记.assets/image-20210215224232033.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5gPZjMoF-1656214887487)(接口测试-第01天-课堂笔记.assets/image-20210707113752374.png)]

    fiddler 抓包验证

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JYiSEdlU-1656214887487)(接口测试-第01天-课堂笔记.assets/image-20210707115816172.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KqixkTwV-1656214887487)(接口测试-第01天-课堂笔记.assets/image-20210707120133271.png)]

    请求行

    • http 请求方法:大小写均可。
      • GET:查询。 —— 没有请求体
      • POST:添加。(登录时常用)
      • put: 修改。
      • delete: 删除。 —— 没有请求体

    请求头

    • 数据格式:k:v
    • Content-Type:
      • application/json: JSON数据格式
      • application/x-www-form-urlencoded: form表单数据

    请求体

    • GET和DELETE 没有
    • PUT 和POST有
    • 数据类型受 Content-Type 值影响。

    练习

    • 以下是抓取的某个HTTP协议数据包的请求报文,请问其中,请求行,请求头,请求体分别是什么?
    POST http://tpshop-test.itheima.net/index.php HTTP/1.1
    Host: tpshop-test.itheima.net
    Connection: keep-alive
    Content-Length: 53
    Accept: application/json, text/javascript, */*; q=0.01
    Origin: http://tpshop-test.itheima.net
    X-Requested-With: XMLHttpRequest
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
    AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90
    Safari/537.36
    Content-Type: application/x-www-form-urlencoded; charset=UTF-8
    Referer: http://tpshop-test.itheima.net/Home/user/login.html
    Accept-Encoding: gzip, deflate
    Accept-Language: zh-CN,zh;q=0.9
    Cookie: is_mobile=0; province_id=1; city_id=2; district_id=3;
    is_distribut=1; PHPSESSID=1b80tii77mhle0fqd2bg52ucg5; cn=0
    
    username=13800138006&password=123456&verify_code=8888
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    HTTP响应

    作用:

    • 服务器端,针对客户端发送的 http请求,回发响应数据。—— http应答!
    • 规定 回发给客户端的数据组织格式。

    整体格式

    • 响应行(状态行):协议版本 (空格) 状态码 (空格) 状态描述
    • 响应头:语法格式:k:v
      • Content-Type: 描述 响应体中数据类型。
    • 空行:代表响应头结束
    • 响应体:绝大多数不为空。(请求成功:回发数据,失败:回发错误信息)
      • 数据类型受 Content-Type值影响。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EmWy3ZwN-1656214887488)(接口测试-第01天-课堂笔记.assets/image-20210707122117120.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BOMnoNoW-1656214887488)(接口测试-第01天-课堂笔记.assets/image-20210215224253933.png)]

    状态行

    • 状态码:

      • 1xx:代表指示信息。表请求已经被接收,等待继续处理。
      • 2xx:代表请求成功被处理、接收。 常见:200、201
      • 3xx:重定向,待访问的资源,需求重新指定路径访问。
      • 4xx:代表客户端错误。常见:404、 403
      • 5xx:访问器端错误。
    • 状态码描述:一般与状态码 唯一对应。 200 —— ok; 404 —— file not found

    响应头

    • 语法格式:k:v
    • Content-Type:值为 响应体 的数据类型。
    • Content-Length: 响应体的大小。可以不写,浏览器会自动求取。一旦写,必须准确!

    响应体

    • 回发给客户端的 消息内容。常见的有 html网页、xml、json

    练习

    • 以下是HTTP协议的响应报文内容,请问,状态行、响应头、响应体分别是哪几个部分?
    HTTP/1.1 200 OK
    Server: nginx
    Date: Mon, 29 Jun 2020 03:36:28 GMT
    Content-Type: text/html; charset=UTF-8
    Connection: keep-alive
    Vary: Accept-Encoding
    X-Powered-By: PHP/5.6.40
    Set-Cookie: is_mobile=0; expires=Mon, 29-Jun-2020 04:36:28 GMT;
    Max-Age=3600; path=/
    Expires: Thu, 19 Nov 1981 08:52:00 GMT
    Cache-Control: no-store, no-cache, must-revalidate, post-
    check=0, pre-check=0
    Pragma: no-cache
    Set-Cookie: user_id=3338; path=/
    Set-Cookie: is_distribut=1; path=/
    Set-Cookie: uname=13800138006; path=/
    Set-Cookie: cn=0; expires=Mon, 29-Jun-2020 02:36:28 GMT; Max-
    Age=-3600; path=/
    Content-Length: 805
    
    {"status":1,"msg":"\u767b\u9646\u6210\u529f","result":
    {"user_id":3338,"email":"","password":"519475228fe35ad067744465
    c42a19b2","paypwd":null,"sex":0,"birthday":0,"user_money":"0.00
    ","frozen_money":"0.00","distribut_money":"0.00","underling_num
    ber":0,"pay_points":100,"address_id":0,"reg_time":1590980161,"l
    ast_login":1590980161,"last_ip":"","qq":"","mobile":"1380013800
    6","mobile_validated":1,"oauth":"","openid":null,"unionid":null
    ,"head_pic":null,"province":0,"city":0,"district":0,"email_vali
    dated":0,"nickname":"13800138006","level":1,"discount":"1.00","
    total_amount":"0.00","is_lock":0,"is_distribut":1,"first_leader
    ":0,"second_leader":0,"third_leader":0,"token":"a26e177bd6506ff
    f68c01fd13e742073","message_mask":63,"push_id":"0","distribut_l
    evel":0,"level_name":"\u6ce8\u518c\u4f1a\u5458"},"url":""}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    传统风格接口

    特点:

    • 请求方法,只使用 get 和 post 即可。
    • URL 不唯一。同一个操作可以对应不同的 URL
    • 状态码的使用较单一。200 最常见。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V24dmz4y-1656214887488)(接口测试-第01天-课堂笔记.assets/image-20210707153849856.png)]

    RESTful风格接口

    特点:

    1. 每一个URL代表一种资源;
    2. 客户端和服务器之间,传递这种资源的某种表现层;
      • 表现层:数据的不同表现形式(如:图片、文字表现同一个数据对象)
    3. 客户端通过四个HTTP动词(GET、post、delete、put),对服务器端资源进行操作,实现"表现层状态转化";
    4. 接口之间传递的数据最常用格式为JSON。

    在这里插入图片描述

  • 相关阅读:
    VSCode学习笔记一:添加代码模板
    个人电脑好用必备软件(使用过)
    SpringBoot全局异常处理请求参数校验及响应体包装
    听GPT 讲Istio源代码--cni
    C#中.NET 7.0 Windows窗体应用通过EF访问已有数据库并实现追加、删除、修改、插入记录
    C++ opencv设置视频的捕获方式为 MJPG设置失败
    LVM逻辑卷管理的知识总结和操作说明
    表数据结构变动、修复表数据的历史版本兼容解决方案
    第六章 图论 16 AcWing 1558. 加油站
    从正射到倾斜,Mavic 3E详细使用报告
  • 原文地址:https://blog.csdn.net/weixin_44244493/article/details/125468371