關于接口測試的HTTP基礎【接口測試】

HTTP 協議基礎知識總結(用于 Web API 接口測試)

接口測試中最常用的通訊協議就是 HTTP(Hypertext Transfer Protocol),本節旨在幫助理解 HTTP 協議的結構、工作流程以及如何用于接口測試。

一、HTTP 協議簡介

HTTP 是一種客戶端-服務端模型應用層協議,最初用于瀏覽器與網站服務器之間的數據傳輸。由于其結構簡單、使用靈活,現在已經成為服務端與服務端、移動 App 與服務端等通信的主流協議。

常見版本

版本

特點

0.9

最初版本,僅支持 GET 方法

1.0

增加了請求頭,使用 TCP 短連接

1.1

默認開啟 keep-alive,復用連接(最常用)

2

支持多路復用、頭部壓縮等優化

3

基于 UDP 的 QUIC 協議實現


二、HTTP 通信流程

基本模型:客戶端發起請求,服務端返回響應。

  • 客戶端必須先發送 HTTP 請求(Request)
  • 服務端響應 HTTP 響應(Response)
  • HTTP/1.1 之前:每個請求都建立并斷開連接
  • HTTP/1.1:支持連接復用(keep-alive)

注意:服務端不能主動向客戶端推送消息(除非使用 WebSocket)。


三、HTTP 請求結構(Request)

HTTP 請求由 3 個部分組成:

1. 請求行(Request Line)

格式如下:

<請求方法> <請求路徑> <HTTP版本>

示例:

GET /mgr/login.html HTTP/1.1
POST /api/medicine HTTP/1.1
常見請求方法

方法

含義

GET

獲取資源(常用于讀取數據)

POST

提交資源(常用于新增數據)

PUT

更新資源

DELETE

刪除資源

PATCH

局部更新(非主流)

重點掌握 GET / POST / PUT / DELETE,用于模擬前端對后端的 CRUD 行為。


2. 請求頭(Request Headers)

請求頭以 鍵: 值 的形式呈現,描述請求的元信息。例如:

Host: www.example.com
User-Agent: Mozilla/5.0
Content-Type: application/json
Content-Length: 51
  • Host:目標服務器地址
  • User-Agent:客戶端信息(如瀏覽器、工具類型)
  • Content-Type:請求體的數據格式(例如 JSON)
  • Content-Length:請求體字節長度

3. 請求體(Request Body)

請求體用于提交數據(常用于 POST、PUT),常見格式:

類型

描述

application/json

JSON 格式數據

application/xml

XML 格式數據

application/x-www-form-urlencoded

表單數據(key=value&key2=value2)

multipart/form-data

上傳文件或表單

例如:

name=qingmeisu&sn=099877883837&desc=清霉素藥品

請求頭和請求體之間必須用一個 空行 分隔。


4. URL 參數(Query String)

URL 中 ? 后面的部分叫做查詢字符串,用于傳遞參數。例如:

https://www.baidu.com/s?wd=iphone&rsv_spt=1

解析為:

參數名

參數值

wd

iphone

rsv_spt

1

格式為 key=value,多個參數用 & 連接。


四、HTTP 響應結構(Response)

HTTP 響應也由三部分組成:

1. 響應狀態行(Status Line)

格式:

<協議版本> <狀態碼> <狀態描述>

示例:

HTTP/1.1 200 OK
常見狀態碼分類:

狀態碼段

含義

示例

2xx

成功處理請求

200 OK、201 Created

3xx

重定向

301 Moved Permanently、302 Found

4xx

客戶端錯誤

400 Bad Request、401 Unauthorized、403 Forbidden、404 Not Found

5xx

服務端錯誤

500 Internal Server Error、503 Service Unavailable


2. 響應頭(Response Headers)

和請求頭類似,用于描述返回信息的元數據。例如:

Content-Type: application/json
Content-Length: 37
Server: WSGIServer/0.2 CPython/3.7.3

3. 響應體(Response Body)

響應體通常用于返回請求的數據內容,例如:

{"ret": 0,"retlist": [],"total": 0
}

和請求體一樣,常見格式有:

格式類型

說明

JSON

常見于現代 Web API

XML

用于老舊系統或兼容需求

HTML

瀏覽器訪問頁面時

文本 / 表單數據

少見


五、接口測試中重點關注的 HTTP 要素

要素

說明

方法

使用 GET/POST/PUT/DELETE 發起不同請求

URL

接口地址,包括路徑與參數

請求頭

設置 Content-Type 等必要信息

請求體

提交 JSON 或表單數據等

響應狀態碼

判斷接口是否正常返回

響應體內容

驗證數據是否符合預期


六、開發者工具查看 HTTP 消息

在瀏覽器(如 Chrome)中,按 F12 打開開發者工具,切換至 Network 標簽頁,刷新頁面后可以查看每個請求的詳細信息,包括:

  • 請求方法 / URL / 狀態碼
  • 請求與響應頭
  • 請求與響應體(Headers / Payload / Preview)

七、總結

理解 HTTP 協議是掌握接口測試的前提,尤其要掌握:

  • HTTP 的通信模型(請求 → 響應)
  • 請求結構(方法、頭部、體)
  • 響應結構(狀態碼、數據格式)
  • GET / POST / PUT / DELETE 的實際含義與應用場景

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/91509.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/91509.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/91509.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

STM32 DMA通信詳解

STM32 DMA通信詳解DMA(Direct Memory Access&#xff0c;直接內存訪問)是STM32微控制器中一種重要的數據傳輸機制&#xff0c;它允許外設與內存之間或內存與內存之間直接傳輸數據&#xff0c;而無需CPU的干預。這種機制可以顯著提高系統性能&#xff0c;特別是在需要高速數據傳…

pytest--1--pytest-mock常用的方法

1. mocker.patch mocker.patch 是最常用的方法&#xff0c;用于替換指定的對象或方法。它可以用于模擬函數、方法、類或模塊。 語法 mocker.patch(target, newDEFAULT, specNone, createFalse, spec_setNone, autospecNone, new_callableNone, **kwargs)示例 import pytest fro…

尚庭公寓----------分頁查詢

根據條件分頁查詢公寓列表 進行分頁配置 package com.nie.lease.common.mybatisplus;import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.in…

【圖像質量評價指標】圖像熵(Image Entropy) —— 熵值飽和現象

文章目錄一、圖像熵&#xff08;Image Entropy&#xff09;&#xff08;1&#xff09;基本原理&#xff08;2&#xff09;優勢與局限&#xff08;3&#xff09;推薦策略多指標聯合推薦體系噪聲應對機制建議二、項目實戰 —— 通過圖像熵評價序列圖像&#xff0c;并提取最優圖像…

GaussDB in的用法

1 in的作用in運算符允許您在WHERE子句中指定多個值。 in運算符是多個OR條件的簡寫。2 in的語法select column_name(s) from table_name where column_name in (value1, value2, ...); 或者 select column_name(s) from table_name where column_name in (select statement);3 i…

【C語言進階】內存函數

目錄 1.memcpy函數 1.1 模擬實現 2.memmove函數 3.memcmp函數 1.memcpy函數 字符串拷貝strcpy和strncpy是有一定局限性的&#xff0c;只能拷貝字符串&#xff0c;而memcpy可以拷貝任意類型的數據&#xff0c;單位是字節。 1.1 模擬實現 #include<stdio.h> #include&l…

從亂序到整潔:Swift 實現奇偶鏈表重排的最佳方案

文章目錄摘要描述題解答案題解代碼分析分段講解示例測試及結果時間復雜度空間復雜度總結摘要 在開發中&#xff0c;鏈表結構經常出現在緩存淘汰、操作系統任務調度、或是 LRU 算法中&#xff0c;尤其是對節點位置的靈活操作更是鏈表的強項。LeetCode 第 328 題「奇偶鏈表」就給…

WPF+CEF 執行JS報錯

WPFCEF 執行JS報錯 在WPF中執行 webBrowser.EvaluateScriptAsync(“window.scrollBy(0, 1000);”); 在部分網站會報異常&#xff1a; Request BrowserId : XXXX not found it’s likely the browser is already closed環境 .Net Framework 4.7 CefSharp.Wpf 131.3.50 解決方案&…

【Python3-Django】快速掌握DRF:ModelViewSet實戰指南

DRF講解 1. 什么是 Django 和 Django REST Framework&#xff1f; 在深入 ModelViewSet 之前&#xff0c;我們先簡單了解一下背景知識&#xff1a; Django 是一個基于 Python 的 Web 開發框架&#xff0c;旨在幫助開發者快速構建安全、可擴展的 Web 應用。它遵循“不要重復自己…

TRAE IDE** 下載、安裝、開發、測試和部署 2048 小游戲的全流程指南

以下是一份完整的 TRAE IDE 下載、安裝、開發、測試和部署 2048 小游戲的全流程指南。整個過程基于 TRAE 作為 AI 輔助編程工具的特性&#xff08;對標 Cursor/AWS Kiro&#xff09;&#xff0c;假設它支持智能代碼生成和云部署功能。 【插播】騰訊云AI Coding大賽https://mar…

重學前端005 --- 響應式網頁設計 CSS 盒子模型

文章目錄BOX 盒子概念CSSoverflow: hidden;filter: blur(3px);box-shadow: 0 0 3px 3px #efb762;border-radius: 30px 25px 60px 12px;transform: rotate(-0.6deg);每個 HTML 元素都是一個盒子&#xff0c;它擁有著自己的間距和邊框。這叫作“盒子模型”。 BOX 盒子概念 內容…

TC500R立式加工中心主軸箱機械結構設計cad【11張】三維圖+設計說明書

TC500R立式加工中心主軸箱機械結構設計 摘 要 數控機床作為工業制造的基礎&#xff0c;在國家的發展中起著非常重要的作用。隨著我國經濟的快速發展&#xff0c;我國已經成為工業制造大國&#xff0c;制造業的發展離不開數控機床&#xff0c;而TC500R立式加工中心作為數控機床…

CSS Grid布局:構建現代網頁的強大網格系統

目錄 一、Grid布局基礎概念 1.1 網格容器與網格項 1.2 創建基本網格 二、核心屬性詳解 2.1 定義網格軌道 2.2 網格間距控制 2.3 網格項對齊方式 三、實戰布局技巧 3.1 創建經典布局 3.2 網格項定位技巧 3.3 響應式網格設計 四、Grid布局 vs Flexbox布局 五、高級…

Elasticsearch / MongoDB / Redis / MySQL 區別

1、一句話簡介名稱核心用途Elasticsearch強大的全文檢索與日志分析引擎MongoDB靈活的文檔數據庫&#xff0c;適合半結構化/結構化數據Redis高性能的內存鍵值緩存數據庫&#xff0c;用于實時高并發處理MySQL經典關系型數據庫&#xff0c;強事務支持&#xff0c;結構化數據持久存…

網絡通信之基礎知識

一、什么是計算機網絡&#xff1f;計算機網絡是指由若干主機、通信鏈路和網絡設備&#xff08;如路由器、交換機等&#xff09;組成的系統&#xff0c;借助通信協議&#xff0c;實現信息共享和資源互聯。其本質是&#xff1a;多臺設備之間通過協議進行數據交換。二、網絡協議與…

Java 設計模式及應用場景

Java 設計模式是解決軟件開發中常見問題的通用方案&#xff0c;通過合理的設計模式可以提高代碼的可維護性、可擴展性和復用性。下面將介紹 Java 中常見的設計模式及其原理。一、設計模式的分類設計模式主要分為三大類&#xff0c;共 23 種經典模式&#xff1a;創建型模式&…

GitHub Jekyll博客本地Win開發環境搭建

GitHub Jekyll博客本地Win開發環境搭建 標簽 后端 blog jekyll 全文鏈接 GitHub Jekyll博客本地Win開發環境搭建 概述 本文詳細介紹了在Windows系統上搭建Jekyll博客本地開發環境的完整步驟&#xff0c;為GitHub Pages博客開發提供本地預覽和調試能力。 環境依賴 Ruby環…

瀏覽器防錄屏是怎樣提高視頻安全性?

文章目錄前言一、什么是瀏覽器防錄屏二、瀏覽器防錄屏的原理是什么&#xff1f;&#xff08;javascript&#xff09;三、如何實現瀏覽器防錄屏總結前言 在數字內容版權保護面臨嚴峻挑戰的今天&#xff0c;瀏覽器防錄屏技術作為視頻安全體系的關鍵一環&#xff0c;其重要性日益…

uni-app項目配置通用鏈接拉起ios應用android應用

uniapp開發ios&android可拉起app的辛酸歷程IOS配置指南1、登錄[apple Developer](https://developer.apple.com/account/resources/identifiers/list)賬戶找到自己開發的對應的項目2、確保對應項目的Associated Domains是打開狀態3、本地創建一個 apple-app-site-associati…

deep learning(李宏毅)--(六)--loss

一&#xff0c;關于分類問題及其損失函數的一些討論。 在構建分類模型是&#xff0c;我們的最后一層往往是softmax函數&#xff08;起到歸一化的作用&#xff09;&#xff0c;如果是二分類問題也可以用sigmoid函數。 在loss函數的選擇上&#xff0c;一般采用交叉熵損失函數(…