在React中利用Postman測試代碼獲取數據

文章目錄

  • 概要
  • 名詞解釋
    • 1、Postman
    • 2、axios
  • 使用Postman測試API
  • 在React中獲取并展示數據
  • 小結

概要

在Web開發中,通過API獲取數據是一項常見任務。Postman是一個功能強大的工具,可以幫助開發者測試API,并查看API的響應數據。在本篇博客中,我們將探討如何通過Postman測試API,并將測試代碼移植到React項目中,以axios獲取數據并在前端頁面中展示。
在這里插入圖片描述


名詞解釋

1、Postman

Postman是一個功能強大的API開發工具,被廣泛用于各種開發場景,包括Web開發、移動應用開發和后端服務開發等。它的主要特點和功能包括:

  1. 可視化界面:Postman提供了直觀的用戶界面,使用戶能夠輕松地創建、編輯和管理API請求和響應。

  2. 支持多種HTTP請求:Postman支持常見的HTTP請求方法,如GETPOSTPUTDELETE等,以及其他高級功能,如文件上傳、Cookie管理等。

  3. 環境變量和全局變量:用戶可以在Postman中定義環境變量和全局變量,以便在不同的環境中使用相同的請求,從而簡化了測試和開發過程。

  4. 測試腳本:Postman允許用戶編寫測試腳本,用于驗證API的響應是否符合預期,并進行自動化測試。

  5. 集合和集合運行:用戶可以將多個相關的請求組織成集合,并使用集合運行功能執行這些請求,以便進行批量測試和自動化任務。

  6. 分享和協作:Postman允許用戶將他們創建的請求和集合分享給團隊成員或其他用戶,實現協作開發和知識共享。

  7. 實時協作:Postman還提供了實時協作功能,允許團隊成員同時編輯和共享請求和集合,從而更加高效地進行協作開發和測試。

總的來說,Postman為開發人員提供了一個集成的平臺,幫助他們簡化和加速API開發和測試過程,提高了開發效率和代碼質量。

2、axios

Axios是一個流行的基于Promise的HTTP客戶端,用于瀏覽器和Node.js環境。它可以在客戶端和服務器端之間進行數據傳輸,并提供了許多強大的功能,使得發送HTTP請求變得更加簡單和靈活。

Axios的特點和功能包括:

  1. 簡單易用:Axios提供了簡潔的API,使得發送HTTP請求變得非常簡單,同時支持Promise API,方便處理異步操作。

  2. 支持Promise:Axios基于Promise實現,使得處理HTTP請求和響應變得更加靈活和可控,支持鏈式調用和異步操作。

  3. 支持瀏覽器和Node.js:Axios可以在瀏覽器和Node.js環境中使用,使得在不同的應用場景下都能方便地發送HTTP請求。

  4. 支持取消請求:Axios允許取消未完成的HTTP請求,防止不必要的請求發送或資源浪費。

  5. 攔截器:Axios提供了攔截器功能,允許在請求發送和響應接收的過程中插入自定義的邏輯,例如在請求發送前添加認證信息或在響應接收后處理返回的數據。

  6. 客戶端和服務器端的CSRF保護:Axios提供了內置的CSRF保護功能,可以幫助防止跨站請求偽造攻擊。

  7. 錯誤處理:Axios提供了豐富的錯誤處理機制,能夠捕獲和處理請求過程中可能出現的各種錯誤,提高了應用程序的健壯性和可靠性。

總的來說,Axios是一個功能強大、易用且靈活的HTTP客戶端,廣泛應用于前端開發和后端開發中,幫助開發人員更加輕松地與服務器進行數據交互。

使用Postman測試API

首先,我們使用Postman來測試TheCocktailDB API。我們想要獲取以字母A開頭的雞尾酒數據。在Postman中,我們發送一個GET請求到以下URL:

https://www.thecocktaildb.com/api/json/v1/1/search.php?f=a

可以看到請求返回了獲得的一些數據,我們確保我們能夠成功地獲取到數據,并且理解API返回的數據結構,以便在React中處理數據
在這里插入圖片描述
點擊右邊的code<>,選擇NodeJs-Axios,可以看到含有axios的nodejs代碼

在這里插入圖片描述

在React中獲取并展示數據

接下來,我們將使用axios庫在React中獲取數據,并使用Ant Design組件庫美化數據展示。第一步先創建一個react應用,創建方法可以參考之前的文章🚪,輸入以下代碼創建一個名字為react-postman的react應用

npx create-react-app react-postman

我們將創建一個React組件,名為productsList,來展示我們獲取到的雞尾酒數據,在app.js引用這個組件
在這里插入圖片描述
productsList.js

import React, { useState, useEffect } from "react";
import axios from "axios";
import { Table, Pagination, Input } from "antd";
import "../node_modules/antd/dist/reset.css"; // 導入 Ant Design 樣式表const ProductsData = () => {const [userData, setUserData] = useState(null);const [filteredData, setFilteredData] = useState(null);const [searchText, setSearchText] = useState("");const [currentPage, setCurrentPage] = useState(1);const pageSize = 10; // 每頁顯示的數據量useEffect(() => {const fetchData = async () => {try {const response = await axios.get("https://www.thecocktaildb.com/api/json/v1/1/search.php?f=a");setUserData(response.data.drinks);setFilteredData(response.data.drinks);} catch (error) {console.log(error);}};fetchData();}, []);// 處理搜索功能const handleSearch = (value) => {setSearchText(value);if (value === "") {setFilteredData(userData);} else {const filtered = userData.filter((item) =>item.strDrink.toLowerCase().includes(value.toLowerCase()) ||item.strCategory.toLowerCase().includes(value.toLowerCase()));setFilteredData(filtered);}setCurrentPage(1); // 重置為第一頁};// 處理頁碼改變事件const handlePageChange = (page) => {setCurrentPage(page);};// 計算當前頁的數據const currentPageData = filteredData && Array.isArray(filteredData)? filteredData.slice((currentPage - 1) * pageSize, currentPage * pageSize): [];const columns = [{title: "飲品編號",dataIndex: "idDrink",key: "idDrink",},{title: "飲品名稱",dataIndex: "strDrink",key: "strDrink",},{title: "種類",dataIndex: "strCategory",key: "strCategory",},{title: "是否有酒精",dataIndex: "strAlcoholic",key: "strAlcoholic",},{title: "圖片",dataIndex: "strDrinkThumb",key: "strDrinkThumb",render: (url) => <img src={url} style={{ width: 100 }} alt="drink" />, // 自定義列渲染},// Add more columns for other product data if needed];return (<div><h2 style={{ textAlign: "center" }}>Drinks Data</h2><Input.Searchplaceholder="Search Drink Name or category..."value={searchText}onChange={(e) => handleSearch(e.target.value)}style={{ marginBottom: 16 }}/><TabledataSource={currentPageData}columns={columns}loading={!userData}pagination={false}/><Paginationcurrent={currentPage}pageSize={pageSize}total={filteredData ? filteredData.length : 0}onChange={handlePageChange}style={{ marginTop: 16, textAlign: "center" }}/></div>);
};export default ProductsData;

這個組件包括了從API獲取數據、搜索、分頁等功能,并且使用了Ant Design的TablePagination組件來美化數據展示和分頁。
在這里插入圖片描述

在這個組件中,useEffect鉤子用于在組件加載時獲取數據,useState用于管理組件狀態,axios用于發送HTTP請求,而Table和Pagination組件用于展示數據和分頁。
在這里插入圖片描述

實現了搜索功能,用戶可以通過輸入飲品名稱或種類來過濾數據,還有分頁功能,讓用戶可以瀏覽數據的不同頁面
在這里插入圖片描述


小結

通過使用Postman測試API并在React中獲取數據,我們能夠輕松地集成外部數據到我們的應用程序中。同時,通過使用Ant Design組件庫,我們可以快速地美化數據展示,提高用戶體驗。這使得我們能夠構建更加動態和交互性的應用程序,更好地與外部API進行通信。如果有任何疑問,歡迎留言討論🌹

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

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

相關文章

【C語言】—— 動態內存管理

【C語言】——動態內存管理 一、動態內存管理概述1.1、動態內存的概念1.2、動態內存的必要性 二、 m a l l o c malloc malloc 函數2.1、函數介紹2.2、應用舉例 三、 c a l l o c calloc calloc 函數四、 f r e e free free 函數4.1、函數介紹4.2、應用舉例 五、 r e a l l o …

無列名注入

在進行sql注入時&#xff0c;一般都是使用 information_schema 庫來獲取表名與列名&#xff0c;因此有一種場景是傳入參數時會將 information_schema 過濾 在這種情況下&#xff0c;由于 information_schema 無法使用&#xff0c;我們無法獲取表名與列名。 表名獲取方式 Inn…

Redis——Redis集群腦裂問題

Redis集群的腦裂問題&#xff08;Split-Brain&#xff09;是一個在分布式系統中可能發生的嚴重問題&#xff0c;特別是在基于主從復制和哨兵&#xff08;Sentinel&#xff09;機制的Redis集群環境中。以下是對Redis集群腦裂問題的詳細闡述&#xff1a; 定義 Redis集群腦裂問題…

FullCalendar日歷組件集成實戰(3)

背景 有一些應用系統或應用功能&#xff0c;如日程管理、任務管理需要使用到日歷組件。雖然Element Plus也提供了日歷組件&#xff0c;但功能比較簡單&#xff0c;用來做數據展現勉強可用。但如果需要進行復雜的數據展示&#xff0c;以及互動操作如通過點擊添加事件&#xff0…

SwiftUI中的常用圖形(Shapes)

概述 在SwiftUI中&#xff0c;常用的圖形&#xff08;Shape&#xff09;主要有&#xff1a; Circle&#xff1a;圓形 Ellipse&#xff1a;橢圓形 Capsule&#xff1a;膠囊形 Rectangle&#xff1a;矩形 RoundedRectangle&#xff1a;圓角矩形 上面的這些圖形都繼承了Shape協議…

DFA算法 敏感詞過濾方案匯總以及高效工具sensitive-word

敏感詞過濾方案匯總以及高效工具sensitive-word 導入pom文件 <dependency><groupId>com.github.houbb</groupId><artifactId>sensitive-word</artifactId><version>0.12.0</version> </dependency>接下來我們編寫相關測試類…

解四層負載和七層負載:Nginx 的應用示范

在網絡架構中&#xff0c;負載均衡是分配網絡或應用程序流量到多個服務器的技術&#xff0c;以優化資源使用、最大化吞吐量、最小化響應時間和避免任何單一資源的過載。Nginx&#xff0c;作為一款強大的HTTP和反向代理服務器&#xff0c;能夠處理七層&#xff08;應用層&#x…

深入剖析JVM、JDK和JRE的區別與聯系

在Java開發和運行過程中&#xff0c;JVM、JRE和JDK是三個核心組件。理解它們的區別和聯系是每個Java開發者的基礎技能。本文將深入探討這三個組件的作用、組成及其在實際應用中的重要性。 一、Java虛擬機&#xff08;JVM&#xff09; **JVM&#xff08;Java Virtual Machine&…

Hive讀寫文件機制

Hive讀寫文件機制 1.SerDe是什么&#xff1f; SerDe是Hive中的一個概念&#xff0c;代表著“序列化/反序列化” &#xff08;Serializer/Deserializer&#xff09;。 SerDe在Hive中是用來處理數據如何在Hive與底層存儲系統&#xff08;例如HDFS&#xff09;之間進行轉換的機制…

ceph糾刪碼精簡配置ec4+2:1與ec4+2的切換

概述 近期遇到項目&#xff0c;由于靈活配置&#xff0c;前期只有部分機器&#xff0c;后續擴容&#xff0c;想用ec42的糾刪碼&#xff0c;但前期只有3臺機器&#xff0c;需要做精簡ec。 erasure-code-profile 首先按照ceph創建糾刪碼池步驟進行操作。 創建ec42的rule cep…

2024國考行測、申論資料大全,做好備考真的很重要!

1. 國考是什么? 國考,全稱國家公務員考試,是選拔國家公務員的重要途徑。通過國考,你將有機會進入政府部門,為國家建設貢獻力量。 2. 國考難在哪里? 國考之所以難,主要體現在以下幾個方面: (1) 競爭激烈 每年國考報名人數都在百萬以上,而錄取率卻不足2%。千軍萬馬過獨木橋…

前端環境準備的一些注意事項

1. 安裝 node-sass4.x 需要python 2 和visual studio 2017&#xff0c;visual 2019版本不行。 2. python版本更新問題 python重新配置環境變量時&#xff0c;不會立馬生效&#xff0c;重啟可生效。 3. node版本問題 接觸一個新的項目&#xff0c;搞清楚node版本再開始準備…

node和npm版本太高導致項目無法正常安裝依賴以及正常運行的解決辦法:如何使用nvm對node和npm版本進行切換和管理

1&#xff0c;點擊下載 nvm 并且安裝 進入nvm的github&#xff1a; GitHub - coreybutler/nvm-windows: A node.js version management utility for Windows. Ironically written in Go. 這里下載發行版&#xff0c;Releases coreybutler/nvm-windows GitHub 找到 這個 nv…

洗地機哪款好用?希亦、追覓、順造、米家等高品質洗地機推薦

家用洗地機已經成為家庭清潔的重要利器&#xff0c;其多功能性能幫助您輕松應對各種清潔任務&#xff0c;從而保持家居環境的清潔整潔。然而&#xff0c;市場上品牌繁多、功能各異的洗地機讓人眼花繚亂。為了幫助大家做出明智的選擇&#xff0c;我們將在本文中提供全面的選購指…

4.3 將AX寄存器中的16位數分成4組,每組4位,然后把這四組數分別放在AL,BL,CL和DL中

思路&#xff1a; 主要是通過SHR指令對AX寄存器進行移位&#xff0c;有個容易出錯的地方就是&#xff0c;當移位數超過1時&#xff0c;不能直接用指令SHR&#xff0c;而應該先將移位數存入CL&#xff0c;再使用指令SHR AH,CL。舉個例子&#xff1a; SHR AX,1 ;是可以的 SHR A…

選擇法(數值排序)(C語言)

一、運行結果&#xff1b; 二、源代碼&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>//聲明排序函數sort; void sort(int a[], int n);int main() {//初始化變量值&#xff1b;int i, a[10];//填充數組&#xff1b;printf("請輸入10個整數\n&…

win的開發環境配置(Java開發必備)

文章目錄 日常app工具類app開發類app環境類app 由于每次換新工作、用一臺臨時或者新的電腦時總是要想著要下載什么軟件&#xff0c;這次就一次性全部記錄下來&#xff0c;將必須下載的內容做個記錄。 日常app 百度網盤、微信、網易云、搜狗 工具類app office、bandizip&…

現代 c++ 一:c++11 ~ c++23 新特性匯總

所謂現代 c&#xff0c;指的是從 c11 開始的 c&#xff0c;從 c11 開始&#xff0c;加入一些比較現代的語言特性和改進了的庫實現&#xff0c;使得用 c 開發少了很多心智負擔&#xff0c;程序也更加健壯&#xff0c;“看起來像一門新語言”。 從 c11 開始&#xff0c;每 3 年發…

藍橋杯備戰22.k倍區間——前綴和

目錄 題目 分析 暴力求解 優化思路 AC代碼 題目鏈接&#xff1a; P8649 [藍橋杯 2017 省 B] k 倍區間 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn) 題目 分析 很明顯這題是一道前綴和的題 暴力求解 只得了28分 #include<iostream> using namespace std; co…

企業在實施RPA技術時,應如何確保其ROI評估的準確性和全面性?

企業在實施RPA&#xff08;Robotic Process Automation&#xff09;技術時&#xff0c;確保ROI&#xff08;投資回報率&#xff09;評估的準確性和全面性是至關重要的。以下是確保ROI評估準確性和全面性的一些關鍵步驟&#xff1a; ### 1. 明確業務目標 首先&#xff0c;企業需…