【接口測試】HTTP協議介紹

目錄

介紹

HTTP狀態碼

HTTP報文

請求方法

HTTP版本

HTTP標頭

通用標頭

請求標頭

響應標頭

get 編碼

post 編碼

RESTful風格

HTTPS


?

絕大多數的Web服務接口都是基于HTTP協議進行通信的,包括RESTful API和SOAP等。了解HTTP協議可以幫助測試人員理解接口的請求和響應格式,從而更好地進行接口測試

介紹

HTTP 協議(超文本傳輸協議)是服務端傳送超文本到前端的傳輸協議,傳送的數據一般包括 HTML 文件、圖片、文字等。HTTP 協議工作在前端到服務端的架構上,App 端或者 Web 瀏覽器端通過 URL 或者接口向服務端發送請求,服務端接收到前端的請求后,向前端發送響應信息

HTTP狀態碼

  1. 1xx(信息提示):服務器接收到請求并正在處理。
    • 100 Continue:客戶端可以繼續發送請求。
    • 101 Switching Protocols:服務器正在切換協議。
  1. 2xx(成功):請求被成功接收、理解和處理。
    • 200 OK:請求成功,服務器返回所請求的資源。
    • 201 Created:請求已成功處理,并創建了新的資源。
    • 204 No Content:服務器成功處理請求,但沒有返回任何內容。
  1. 3xx(重定向):需要進一步操作以完成請求。
    • 301 Moved Permanently:所請求的資源已永久移動到新位置。
    • 302 Found:所請求的資源暫時移動到新位置。
    • 304 Not Modified:客戶端緩存的資源是最新的,無需重新下載。
    • 303:永久重定向
  1. 4xx(客戶端錯誤):請求包含語法錯誤或無法完成請求。
    • 400 Bad Request:請求無效,服務器無法理解。
    • 401 Unauthorized:請求未經授權。
    • 403 Forbidden:服務器拒絕請求訪問。
    • 404 Not Found:所請求的資源不存在。
  1. 5xx(服務器錯誤):服務器在處理請求時發生錯誤。
    • 500 Internal Server Error:服務器內部錯誤。
    • 502 Bad Gateway:服務器作為網關或代理,從上游服務器接收到無效響應。
    • 503 Service Unavailable:服務器暫時無法處理請求

401和403的區別?

401狀態碼表示客戶端請求需要進行身份驗證,而此時客戶端未提供憑據或提供的憑據不正確,客戶端需要重新進行身份驗證。

403狀態碼表示客戶端請求被禁止,服務端明確告知客戶端這個請求是不被允許的,客戶端無需重新進行身份驗證。

要想解決401狀態碼問題,需要首先確認賬號密碼是否正確,其次檢查服務端身份驗證的代碼是否能夠正確調用。如果服務端沒有進行身份驗證,需要根據業務規則對接口進行修改,讓其進行身份驗證。

要想解決403狀態碼問題,需要先確認客戶端訪問的資源是否有權限訪問,如果沒有權限,需要根據業務規則修改接口權限配置。

HTTP報文

HTTP協議主要由三大部分組成:

  • 起始行:由方法、URL字段和HTTP版本字段組成
  • 頭部字段
  • 正文消息

(起始行和頭部字段,合并稱為請求頭或響應頭)

請求方法

  1. GET:從服務器獲取資源。該請求方法不應該對服務器上的資源做任何修改,只允許讀取數據。
  2. POST:向服務器添加新的資源。該請求方法對服務器上的資源做出修改,并在服務器上創建新資源。
  3. PUT:向服務器更新某個資源。該請求方法對特定資源進行完全替換,如果沒有找到該資源,則創建一個新的。
  4. DELETE:從服務器刪除指定資源。
  5. HEAD:與GET類似,但僅返回響應頭部信息,不返回響應正文(用于獲取資源的元信息)。
  6. OPTIONS:獲取Web服務器所支持的HTTP請求方法列表。
  7. CONNECT:HTTP/1.1協議中預留給能夠將連接改為管道方式的代理服務器。
  8. TRACE:回顯服務器收到的請求,用于測試或診斷。

HTTP版本

  • HTTP1.0
  • HTTP1.1
  • HTTP2.0

HTTP標頭

通用標頭
請求標頭

Accept:告知客戶端能夠接收的MIME類型是什么

Accept-Charset:客戶端能夠接受的字符編碼

Accept-Encoding:客戶端希望服務端返回的內容編碼

Accept-Language:客戶端希望服務端返回的語言類型

Authorization:請求頭用于向服務器認證用戶代理的憑據,通常用在服務器以401未經授權狀態和WWW-Authenticate標頭響應之后,啥意思呢? 你不明白的話我畫張圖給你看

Host:指明了服務器的域名

User-Agent:將創建請求的瀏覽器和用戶代理名稱等信息傳達給服務器;Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0

響應標頭
get 編碼

application/x-www-form-urlencoding

post 編碼

1、application/x-www-form-urlencoded (默認)

1、multipart/form-data (上傳文件)

2、application/json (用來告訴服務端消息主體是序列化后的 JSON 字符串)

3、text/xml:是一種使用 HTTP 作為傳輸協議,XML 作為編碼方式的遠程調用規范。 XML 結構還是過于臃腫,一般場景用 JSON 會更靈活方便。

RESTful風格

RESTful風格是一種基于HTTP協議的Web服務架構,它使用HTTP的GET、POST、PUT、DELETE等方法來實現對資源的操作。它強調利用URI(統一資源標識符)來唯一地標識資源,通過HTTP報文中的動詞和請求頭來操作資源,而不是通過某些特定的RPC(遠程過程調用)機制進行通信。RESTful架構通常采用JSON或XML格式作為數據傳輸格式。

在RESTful架構中,資源的狀態可以使用HTTP狀態碼進行表示,如200表示請求成功,404表示未找到資源等。同時,RESTful還要求服務端無狀態化,即服務端不記錄用戶狀態信息,每次請求都包含足夠的信息來描述請求。

使用RESTful架構,可以使得Web應用程序更加簡單、高效、可伸縮、易于維護。目前,RESTful已經成為很多互聯網公司API設計的首選。

HTTPS

HTTPS為了解決HTTP明文傳輸,也沒有用戶驗證,以及未驗證報文完整性的問題

HTTPS 的全稱是 Hypertext Transfer Protocol Secure ,它用來在計算機網絡上的兩個端系統之間進行 安全的交換信息(secure communication) ,它相當于在 HTTP 的基礎上加了一個 Secure安全 的詞眼,那么我們可以給出一個 HTTPS 的定義: HTTPS 是一個在計算機世界里專門在兩點之間安全的傳輸文字、圖片、音頻、視頻等超文本數據的約定和規范。 HTTPS 是 HTTP 協議的一種擴展它本身并不保傳輸的證安全性,那么誰來保證安全性呢? 在 HTTPS 中,使用 傳輸層安全性(TLS)或安全套接字層(SSL) 對通信協議進行加密。也就是 HTTP + SSL(TLS) = HTTPS。

HTTPS 協議提供了三個關鍵的指標

  • 加密(Encryption), HTTPS 通過對數據加密來使其免受竊聽者對數據的監聽,這就意味著當用戶在瀏覽網站時,沒有人能夠監聽他和網站之間的信息交換,或者跟蹤用戶的活動,訪問記錄等,從而竊取用戶信息。
  • 數據一致性(Data integrity),數據在傳輸的過程中不會被竊聽者所修改,用戶發送的數據會完整 的傳輸到服務端,保證用戶發的是什么,服務器接收的就是什么。
  • 身份認證(Authentication) ,是指確認對方的真實身份,也就是 證明你是你 (可以比作人臉識別)它可以防止中間人攻擊并建立用戶信任

SSL/TLS

SSL:安全套接字層,位于OSI七層網絡模型中的第五層。后面更名為TLS

TLS,用于兩個通信程序之間提供保密性和數據完整性

HTTPS并不是一項新的應用層協議,只是HTTP通信接口部分由SSL和TLS替代而已。通常情況下,HTTP會先和直接和TCP進行通信。在使用SSL的HTTPS后,則先和SSL通信,接著再由SSL和TCP進行通信。也就是HTTPS是身披一層SSL的HHTP

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

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

相關文章

回溯算法題單???

力扣: 78. 子集 - 力扣(LeetCode) 216. 組合總和 III - 力扣(LeetCode) LCR 080. 組合 - 力扣(LeetCode) LCR 082. 組合總和 II - 力扣(LeetCode) LCR 083. 全排列…

【多線程】CAS詳解

目錄 🌴什么是 CAS🌸CAS 偽代碼 🎍CAS 是怎么實現的🍀CAS 有哪些應?🌸實現原子類🌸實現自旋鎖 🌳CAS 的 ABA 問題🌸**什么是 ABA 問題**?🌸ABA 問題引來的 B…

【C++】核心編程--函數高級

文章目錄 1. 函數的默認參數2. 函數占位參數3. 函數重載4. 注意事項 1. 函數的默認參數 在C中&#xff0c;函數的形參列表中的形參是可以有默認值的 //語法&#xff1a; 返回值類型 函數名 (參數 默認值){} #include<iostream> using namespace std; //函數默認參數 //如…

異常值檢測-3σ法提交 代碼注釋

背景信息里面都給了相應的答案&#xff0c;但我們可以多了解一下代碼的含義&#xff0c;而不是簡單的復制粘貼 import pandas as pd import matplotlib.pyplot as plt from scipy import stats import numpy as npdata pd.read_csv("src/death.csv", index_colUnna…

ASPICE實操中的那點事兒-如何避免重復性測試

寫在前面 ASPICE理解起來容易&#xff0c;畢竟是有條有理的。但實操起來&#xff0c;尤其是把ASPICE各過程域做全的時候&#xff0c;會遇到各種各樣的問題&#xff08;不是技術問題有多難&#xff0c;而是該如何做選擇&#xff0c;如何既能符合ASPICE要求&#xff0c;保證過程質…

智慧城市建設的新里程碑:公共服務電子支付大屏

隨著科技的飛速發展&#xff0c;我們的生活正在經歷前所未有的變革。電子支付的出現&#xff0c;無疑是這場變革中的一大亮點&#xff0c;它不僅改變了我們日常的支付方式&#xff0c;更成為智慧城市建設的重要一環&#xff0c;為公眾提供了更加便捷、高效的服務體驗。 在以前&…

python SHP2COCO

1. 將shp的標簽數據轉成coco # -*- coding: utf-8 -*- import os, json import cv2 from osgeo import gdal import numpy as np from osgeo import ogr, gdal, osr from shapely.geometry import box, shape from shapely.geometry.polygon import Polygon import collection…

Flutter 的狀態管理

狀態提升&#xff08;Lifting-state-up&#xff09; 把子組件的狀態&#xff0c;提升到上級組件中&#xff0c;從而實現在多個組件之間共享和同步數據的效果 以 flutter counter demo&#xff0c;那個按按鈕1 的來說&#xff0c;現在的 count 是幾&#xff0c;不是存在頁面顯…

政府采購標書制作的要點解析

導語&#xff1a;政府采購是政府為滿足公共利益&#xff0c;按照法定程序和標準&#xff0c;通過招標、競爭性談判等方式&#xff0c;購買商品、工程和服務的行為。標書作為政府采購活動中的重要文件&#xff0c;其制作質量直接影響到項目的順利進行。本文將圍繞政府采購標書制…

二路歸并排序的算法設計和復雜度分析and周記

數據結構實驗報告 實驗目的: 通過本次實驗&#xff0c;了解算法復雜度的分析方法&#xff0c;掌握遞歸算法時間復雜度的遞推計算過程。 實驗內容&#xff1a; 二路歸并排序的算法設計和復雜度分析 實驗過程&#xff1a; 1.算法設計 第一步&#xff0c;首先要將數組進行…

【網站項目】314學生二手書籍交易平臺

&#x1f64a;作者簡介&#xff1a;擁有多年開發工作經驗&#xff0c;分享技術代碼幫助學生學習&#xff0c;獨立完成自己的項目或者畢業設計。 代碼可以私聊博主獲取。&#x1f339;贈送計算機畢業設計600個選題excel文件&#xff0c;幫助大學選題。贈送開題報告模板&#xff…

關于游戲公司組織架構的小討論

過完年剛剛上班沒幾天&#xff0c;就有一件比較搞笑的事情&#xff0c;可以和大家分享一下。 ??某一天我們在公司的會議室開會&#xff0c;發現有非常多蚊子&#xff0c;于是找行政問能不能找專業人士來滅蚊。行政的答復是&#xff0c;專業滅蚊是有固定時間的&#xff0c;還要…

JVM相關面試題(2024大廠高頻面試題系列)

一、JVM的組成 1、JVM由哪些部分組成&#xff0c;運行流程是什么&#xff1f; 回答&#xff1a;在JVM中共有四大部分&#xff0c;分別是Class Loader&#xff08;類加載器&#xff09;、Runtime Data Area&#xff08;運行時數據區&#xff0c;內存分區&#xff09;、Execut…

MyBatis的補充用法

說明&#xff1a;之前介紹過MyBatis的用法&#xff0c;像 用注解和Mapper.xml操作數據庫、在Mapper.xml里寫動態SQL。最近在一次用MyBatis批量更新數據庫對象的場景中&#xff0c;意識到對MyBatis的一些標簽用法不太熟悉&#xff0c;所以去 MyBatis官網 看了一些文檔&#xff0…

php httpfs鏈接hdfs

一.代碼&#xff08;有bug&#xff09; GitHub - michaelbutler/php-WebHDFS: A PHP client for WebHDFS 二.調用代碼 1.代碼1.代碼 require_once(../webhdfs/src/org/apache/hadoop/WebHDFS.php);require_once(../webhdfs/src/org/apache/hadoop/tools/Curl.php); require_o…

什么是人才儲備?如何做人才儲備?

很多小伙伴都會有企業面試被拒的情況&#xff0c;然后HR會告訴你&#xff0c;雖然沒有錄用你&#xff0c;但是你進入了他們的人才儲備庫&#xff0c;那么這個儲備庫有什么作用和特點呢&#xff1f;我們如何應用人才測評系統完善人才儲備庫呢&#xff1f; 人才儲備一般有以下三…

Python打發無聊時光:12.用PyQt實現簡易的心電起搏器界面

第一步&#xff1a;裝PyQt庫 pip install PyQt5 第二步&#xff1a;復制代碼 import sys from PyQt5.QtWidgets import (QApplication, QMainWindow, QPushButton, QVBoxLayout,QWidget, QLabel, QProgressBar, QSlider, QLineEdit, QHBoxLayout) from PyQt5.QtCore import …

軟件分層(數據結構/軟件邏輯上分層+舉例),相連節點的概念+如何相連,為什么是層狀結構(軟件分層,網絡協議分層+梳理協議順序),協議分層(打電話例子)

目錄 軟件分層 介紹 舉例 類的繼承 虛擬文件系統 線程接口封裝 虛擬地址空間 總結 為什么是層狀的 軟件分層 網絡協議 原因 梳理協議順序 相連節點 協議分層 引入 示例 實際上 邏輯上 制定出協議 軟件分層 介紹 通過將軟件系統劃分為不同的層次,每一層都有…

uniApp 調整小程序 單個/全部界面橫屏展示效果

我們打開uni項目 小程序端運行 默認是豎著的一個效果 我們打開項目的 pages.json 給需要橫屏的界面 的 style 屬性 加上 "mp-weixin": {"pageOrientation": "landscape" }界面就橫屏了 如果是要所有界面都橫屏的話 就直接在pages.json 的 gl…

Ps:海綿工具

海綿工具 Sponge Tool可用于調整圖像中特定區域的飽和度&#xff0c;常用于增加或減少顏色的飽和度。 快捷鍵&#xff1a;O 在特別的灰度圖像上&#xff0c;則可用于調整對比度&#xff0c;這可以開發出更多的創意技巧。 ◆ ◆ ◆ 常用操作方法與技巧 1、海綿工具主要用于調整…