[工具系列] 開源的 API 調試工具 Postwoman

介紹

隨著 Web 應用的復雜性增加,API 測試已成為開發中不可或缺的一部分,無論是前端還是后端開發,確保 API 正常運行至關重要。

Postman 長期以來是開發者進行 API 測試的首選工具,但是很多基本功能都需要登陸才能使用,例如創建和管理 Collections(請求集合),這對開發者并不友好。

Postwoman(現已更名為 Hoppscotch)是?Postman 的開源替代品。Hoppscotch 保留了 Postman 的核心功能,同時擁有更輕量、直觀的界面,且完全開源,允許開發者自由修改和擴展。


版權問題

官網指出:? Hoppscotch Community Edition 是免費和開源的,可以將其用于個人和商業項目,是個人和小型團隊的絕佳選擇。

Hoppscotch Community Edition is free and open-source. It is licensed under the MIT License. You can use it for personal and commercial projects. It is a great choice for individuals and small teams.


一張圖了解基本功能

本文重點介紹?Hoppscotch?在單機版環境下的使用,而非團隊協作功能。對于大多數開發者而言,進行 API 測試時往往更多依賴于個人需求,無需依賴登錄賬戶或與他人協作。

界面上的主要功能包括以下

請求類型選擇:

  • 位于界面頂部,可以選擇不同的 HTTP 請求類型(GET、POST、PUT、DELETE、PATCH、OPTIONS、HEAD),用于測試不同類型的 API 操作。

請求 URL:

  • 在輸入框中,可以輸入完整的 API 請求 URL,支持自動補全功能,幫助快速輸入。

請求參數:

  • Query Params:可以通過鍵值對形式輸入 URL 查詢參數,自動添加到請求 URL 后面。
  • Body:用于發送請求體(例如 POST 請求的 JSON、表單數據等)。支持不同的格式(JSON、form-data、x-www-form-urlencoded 等)。
  • Headers:可以自定義請求頭部,添加內容類型、身份驗證信息等。

權限(Authorization):

  • 允許選擇不同的授權方式,如 Basic Auth、Bearer Token、OAuth2 等,用于向 API 發送帶有身份驗證信息的請求。

請求按鈕:

  • Send 按鈕用于發送請求,執行 API 調用。

響應部分:

  • 響應體:顯示從服務器返回的響應內容,支持 JSON 格式的格式化顯示,方便開發者查看響應數據。
  • 狀態碼:顯示響應的 HTTP 狀態碼(如 200、404、500 等),幫助開發者判斷請求的成功與否。
  • 響應時間:顯示請求的響應時間,幫助開發者評估 API 的性能。
  • 響應頭:展示響應的 headers,提供關于返回的元數據(如 Content-Type、Cache-Control 等)。

環境管理:

  • 可以設置多個環境(如開發環境、生產環境等),并在不同的環境中切換,避免手動修改 URL 或變量。

歷史記錄:

  • 提供請求歷史記錄功能,用戶可以查看和重用之前發送過的請求,便于測試和調試。

控制臺輸出:

  • 顯示發送請求和接收響應的詳細日志,幫助開發者調試請求的各個環節。

WebSocket 支持:

  • 支持 WebSocket 請求,可以實時發送和接收消息,測試與 WebSocket 協議的 API 交互。


處理請求

  1. 發送請求:可以發送各種類型的 HTTP 請求(如 GET、POST、PUT、DELETE 等)來與服務器進行交互,檢查接口的行為和響應。
  2. 請求參數:可以在請求中設置參數,包括查詢參數(Query Params)、請求體(Body)、URL 參數等,用于模擬不同的 API 調用場景。
  3. 請求頭:支持自定義請求頭(Headers),如設置 Content-Type、Accept、User-Agent 等,用于控制請求的格式、類型或進行身份驗證等。
  4. 權限 Authorization:支持多種授權方式,如 Basic Auth、Bearer Token 等,幫助開發者在發送請求時添加授權信息,確保請求的合法性。
  5. 響應處理:在發送請求后,Postwoman 會顯示響應數據,包括響應體(Response Body)、狀態碼(Status Code)、響應時間(Response Time)等,幫助開發者分析 API 響應的準確性和性能。


環境變量

變量類型

在 Hoppscotch 中,常用的變量類型包括 全局變量環境變量

  • 全局變量:這些變量可以在整個 Hoppscotch 中訪問,適用于所有請求和環境。它們的作用范圍最廣,適合存儲在不同測試中需要共享的數據。

  • 環境變量:這些變量的作用范圍限于特定的環境。環境變量非常適用于需要為不同環境(例如生產環境和暫存環境)提供相同變量集的場景。通過使用環境變量,可以方便地切換和管理不同環境下的配置和數據。

創建環境

添加環境變量

訪問環境變量

通過以下格式引用變量來訪問請求部分中的變量 <<variable_name>>

腳本

Hoppscotch 提供了一個特殊的 pw 對象,其中包含了用于編寫腳本和進行 API 測試的多種方法。該 pw 對象是全局可用的,可以通過直接引用其名稱來訪問和調用這些方法,方便地在測試過程中執行各種操作和自定義邏輯。

Hoppscotch 的腳本編輯器中附有很多代碼模板,用戶可以直接鼠標點擊使用模板,然后修改模板中的參數即可,無需擔心腳本不會寫的問題。

請求前腳本?Pre-request Script

設置環境變量

pw.env.set()?可以直接用于快速方便的環境變量定義。它可用于更好地組織請求代碼。

pw.env.set("baseURL", "https://httpbin.org");
pw.env.set("method", "get");

這些變量可以在請求部分中訪問,方法是在雙尖括號?<<variable_name>>?中引用它們。
?

生成 random Values 以測試 API

以將?<<randomValue>>?添加到端點 URL 為例子:

https://reqres.in/api/users/<<randomValue>>

現在,在 pre-request script 選項卡中添加以下邏輯:

var random = Math.floor(Math.random() * 10);
pw.env.set("randomValue", random.toString());

這將為環境變量?randomValue?分配一個隨機數,API 將返回與該隨機值關聯的隨機用戶。


?

請求后測試?Post-request Script?

假設某個請求的響應數據如下:

{"data": {"id": 10,"email": "byron.fields@reqres.in","first_name": "Byron","last_name": "Fields","avatar": "https://reqres.in/img/faces/10-image.jpg"},"support": {"url": "https://contentcaddy.io?utm_source=reqres","text": "Tired of writing endless social media content?"}}

測試響應狀態碼

pw.test("Response is ok", () => {pw.expect(pw.response.status).toBe(200);
});

斷言響應數據有效

pw.test("Check first name", () => {const user = pw.response.body.data;pw.expect(user.first_name).toBe("Byron");pw.expect(user.first_name).toBeType("string");
});


參考

Introduction to Hoppscotch - Hoppscotch Documentation

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

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

相關文章

【力扣 簡單 C】746. 使用最小花費爬樓梯

目錄 題目 解法一 題目 解法一 int min(int a, int b) {return a < b ? a : b; }int minCostClimbingStairs(int* cost, int costSize) {const int n costSize; // 樓頂&#xff0c;第n階// 爬到第n階的最小花費 // 爬到第n-1階的最小花費從第n-1階爬上第n階的花費…

python+django開發帶auth接口

pythondjango開發帶auth接口 # coding utf-8 import base64 from django.contrib import auth as django_authfrom django.core.exceptions import ObjectDoesNotExist from django.http import JsonResponsefrom sign.models import Eventdef user_auth(request):"&quo…

RBAC權限模型如何讓API訪問控制既安全又靈活?

url: /posts/9f01e838545ae8d34016c759ef461423/ title: RBAC權限模型如何讓API訪問控制既安全又靈活? date: 2025-07-01T04:52:07+08:00 lastmod: 2025-07-01T04:52:07+08:00 author: cmdragon summary: RBAC權限模型通過用戶、角色和權限的關聯實現訪問控制,核心組件包括用…

安達發|告別低效排產:APS高級排程如何助力電池企業智造升級?

在全球能源轉型的背景下&#xff0c;動力電池、儲能電池等市場需求快速增長&#xff0c;電池制造企業面臨著訂單波動大、工藝復雜、交期嚴格等挑戰。傳統的手工排產或基于ERP的簡單計劃模式已難以滿足高效、精準的生產需求。APS高級排程通過智能算法優化生產計劃&#xff0c;實…

數據結構20250620_數據結構考試

試卷01 天津金海通軟件筆試題 選擇題(4*416) 對于雙向循環鏈表,在p指針所指的結點之后插入s指針所指結點的操作應為 p->nexts; s->prip; p->next->pris; s->nextp->nextp->nexts; p->next->pris; s->prip; s->nextp->nexts->pri …

4. 尋找正序數組的中位數

題目&#xff1a; 給定兩個大小分別為 m 和 n 的正序&#xff08;從小到大&#xff09;數組 nums1 和 nums2。請你找出并返回這兩個正序數組的 中位數 。 算法的時間復雜度應該為 O(log (mn)) 。 示例&#xff1a; 輸入&#xff1a;nums1 [1,3], nums2 [2] 輸出&#xff1a…

DeepSeek飛機大戰小游戲HTML5(附源碼)

用DeepSeek幫忙生成的飛機大戰小游戲網頁版&#xff0c;基于HTML5。 提示詞prompt 幫我做一個網頁版的飛機大戰游戲 html5的游戲功能說明 玩家控制&#xff1a; 使用鍵盤方向鍵或WASD移動飛機 空格鍵發射子彈 移動設備支持觸摸控制 游戲機制&#xff1a; 敵機會從屏幕頂部隨機位…

全素山藥開發指南:從防癢處理到高可用食譜架構

摘要&#xff1a;本文系統性解析山藥的化學特性&#xff08;黏液蛋白/皂苷致癢機制&#xff09;及全素場景下的烹飪解決方案&#xff0c;提供6種高內聚低耦合的食譜實現&#xff0c;附完整防氧化與黏液控制技術方案。一、核心問題分析&#xff1a;山藥處理中的“痛點”致癢物質…

OpenLayers 入門指南:序言

本專欄旨在幫助零GIS基礎的開發人員系統掌握OpenLayers這一強大的開源Web地圖庫&#xff0c;通過 “理論實戰” 結合的方式&#xff0c;逐步實現從創建地圖到構建一個基礎地圖應用模版。無論你是前端開發者、GIS愛好者&#xff0c;都可以通過此專欄零基礎開始用OpenLayers開發一…

WebRTC輕量學習 libdatachannel

最近想了解一些在瀏覽器中推送音視頻流&#xff0c;尋找很多版本的代碼&#xff0c;C、Go、Python等語言實現的webRTC協議。 按照搭建難度和快速實現首選Python版本的WebRTC&#xff0c;這種是最適合原型開發的。 選型&#xff1a;C的開源庫libdatachannel Python的開源庫Ai…

Vue2中的keep-alive:組件狀態緩存與性能優化實戰指南

目錄 一、什么是keep-alive&#xff1f; 與普通組件切換的對比 二、核心用法詳解 1. 基礎用法&#xff1a;動態組件緩存 2. 路由視圖緩存 3. 生命周期鉤子 三、進階配置與優化 1. 精準控制緩存組件 &#xff08;1&#xff09;include/exclude屬性 &#xff08;2&…

FastAPI安全加固:密鑰輪換、限流策略與安全頭部如何實現三重防護?

url: /posts/f96ba438de34dc197fd2598f91ae133d/ title: FastAPI安全加固:密鑰輪換、限流策略與安全頭部如何實現三重防護? date: 2025-07-02T22:05:04+08:00 lastmod: 2025-07-02T22:05:04+08:00 author: cmdragon summary: FastAPI框架安全加固方案包括密鑰輪換自動化、請…

NeighborGeo:基于鄰居的IP地理定位(五)

NeighborGeo:基于neighbors的IP地理定位 X. Wang, D. Zhao, X. Liu, Z. Zhang, T. Zhao, NeighborGeo: IP geolocation based on neighbors, Comput. Netw. 257 (2025) 110896, 5. Case analysis 為了說明NeighborGeo在優化圖結構和利用鄰居信息進行預測方面的優勢,將目標I…

Ethernet IP與Profinet共舞:網關驅動綠色工業的智慧脈動

Ethernet IP與Profinet共舞&#xff1a;驅動綠色工業的智慧脈動 光伏建筑一體化&#xff0c;建筑碳中和&#xff0c;在全球氣候變化、國家碳達峰碳中和戰略大背景下&#xff0c;敬畏生活、生產與自然和諧共處&#xff0c;確立自身資源循環高效利用的倒計時和路線圖。 在全球氣…

衡石科技破解指標管理技術難題:語義層建模如何實現業務與技術語言對齊?

在數字化轉型的深水區&#xff0c;企業指標管理體系普遍面臨一個核心矛盾&#xff1a;業務部門需要敏捷的數據洞察支撐決策&#xff0c;而IT部門卻受困于復雜的數據架構和冗長的需求響應周期。這種矛盾的本質&#xff0c;是傳統指標管理體系中“技術語言”與“業務語言”的割裂…

正品庫拍照PWA應用的實現與性能優化|得物技術

一、 背景與難點 背景 目前得物ERP主要鑒別流程&#xff0c;是通過鑒別師鑒別提需到倉庫&#xff0c;倉庫庫工去進行商品補圖拍照&#xff0c;現有正品庫59%的人力投入在線下商品借取/歸還業務的操作端&#xff0c;目前&#xff0c;線下借取的方式會占用商品資源&#xff0c…

如何使用python識別出文件夾中全是圖片合成的的PDF,并將其移動到指定文件夾

引言 在現代數字化工作流程中&#xff0c;無論是為機器學習模型處理數據&#xff0c;還是進行數字歸檔&#xff0c;區分原生文本 PDF&#xff08;例如&#xff0c;由文字處理器生成的報告&#xff09;和基于圖像的 PDF&#xff08;例如&#xff0c;掃描的發票、檔案文件&#…

淘系怎么做?

首先&#xff0c;要明確一點就是&#xff0c;補單不是“刷/單”&#xff0c;補單是為了給買家營造一個良好的購物氛圍&#xff0c;畢竟再好的產品沒有排名、沒有權重&#xff0c;買家根本都沒有機會看到你的產品&#xff0c;而且只有讓淘寶感覺的產品有扶持必要它才會給你對應的…

網安系列【6】之[特殊字符] SQL注入揭秘:從入門到防御實戰指南

文章目錄一 真實案例二 SQL注入三 為什么危害堪比核彈&#xff1f;四 深入解剖攻擊原理&#x1f3af; 4.1&#xff1a;探測SQL漏洞的存在&#x1f3af; 4.2&#xff1a;數據庫信息探測&#x1f3af; 4.3&#xff1a;數據庫信息探測&#x1f3af; 4.4&#xff1a;數據庫信息進一…

Windows內核并發優化

Windows內核并發優化通過多層次技術手段提升多核環境下的系統性能&#xff0c;以下是關鍵技術實現方案&#xff1a; 一、內核鎖機制優化? 精細化鎖策略? 采用自旋鎖&#xff08;Spinlock&#xff09;替代信號量處理短臨界區&#xff0c;減少線程切換開銷 對共享資源實施讀…