当前位置: 首页 > news >正文

在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进行通信。如果有任何疑问,欢迎留言讨论🌹

相关文章:

在React中利用Postman测试代码获取数据

文章目录 概要名词解释1、Postman2、axios 使用Postman测试API在React中获取并展示数据小结 概要 在Web开发中&#xff0c;通过API获取数据是一项常见任务。Postman是一个功能强大的工具&#xff0c;可以帮助开发者测试API&#xff0c;并查看API的响应数据。在本篇博客中&…...

嵌入式学习-通用定时器

简介 框图介绍 时钟选择 计数器部分 输入捕获和输出比较框图 嵌入式学习全文参考&#xff08;小向是个der&#xff09;做笔记&#xff1a;https://blog.csdn.net/qq_41954556/article/details/129735708...

培训行业有哪些ai工具?

培训行业利用人工智能&#xff08;AI&#xff09;工具的方式多种多样&#xff0c;其中一些常见的工具包括&#xff1a; 1. **经AI深度学习的OCR软件**&#xff1a;OCR能给培训行业带来很大的便利&#xff0c;能大大提高工作效率和降低文字录入的成本&#xff0c;但一般的OCR工具…...

7.STL中string的一些超常用函数 (附习题)

目录 1.find 2.atoi 3.to_string 4.getline 【leetcode 习题】 387.字符串中的第一个唯一字符 125. 验证回文串 1.find 1.查找第一次出现的目标字符串&#xff1a;说明&#xff1a;如果查找成功则输出查找到的第一个位置&#xff0c;否则返回-1&#xff1b; s1.find(s2…...

GPT搜索鸽了!改升级GPT-4

最近OpenAI太反常&#xff0c;消息一会一变&#xff0c;直让人摸不着头脑。 奥特曼最新宣布&#xff1a;5月13日开发布会&#xff0c;不是GPT-5&#xff0c;也不是盛传的GPT搜索引擎&#xff0c;改成对ChatGP和GPT-4的升级&#xff5e; 消息一出&#xff0c;大伙儿都蒙了。 之…...

数字绘画教学实训解决方案

一、建设背景 1.1政策背景 教育信息化政策推动&#xff1a;近年来&#xff0c;随着教育信息化政策的不断推动&#xff0c;各级教育部门纷纷出台相关政策&#xff0c;鼓励和支持教育信息化的发展。数字绘画作为现代艺术教育的重要组成部分&#xff0c;其教学实训解决方案的建设…...

C#之如何判断数据类型

一、GetType方法 a.GetType()&#xff1a;获取当前变量的类型对象 string str "Hello World";Console.WriteLine(str.GetType()); 结果: 二、typeof方法 typeof(Int)&#xff1a;获取的是Int类型的类型对象 int num 10;Console.WriteLine(num.GetType() typeof(i…...

算法学习笔记(Tarjan)

本文介绍 T a r j a n Tarjan Tarjan求强联通分量、找割点和割边、找环。 Tarjan求强联通分量 例题&#xff1a;【模板】有向图缩点 题目描述 给定一个 n n n点 m m m边的有向图&#xff08;保证不存在重边与自环&#xff0c;但不保证连通&#xff09;&#xff0c;请你求出…...

一台linux通过另一台linux访问互联网-TinyProxy

参考&#xff1a; https://blog.csdn.net/weixin_41831919/article/details/113061317https://www.yuncongz.com/archives/1.htmlhttps://blog.csdn.net/aoc68397/article/details/101893369 环境&#xff1a;ubuntu 18.04 机器1: IP 219.216.65.252 (可以访问外网) 机器2: IP…...

探索数据结构:堆的具体实现与应用

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;数据结构与算法 贝蒂的主页&#xff1a;Betty’s blog 1. 堆的概念 堆(Heap)是计算机科学中一类特殊的数据结构。堆通常是一个…...

网络2--MAC地址,IP地址的理解

引入&#xff1a; 每一张主机都会有一张网卡&#xff0c;每一张网卡都有一个48bit位的序列号 当我们的热点被连上&#xff0c;你查看时&#xff0c;就会出现MAC地址&#xff0c;IP地址 那么他们两个是什么呢&#xff1f;&#xff1f;&#xff1f; MAC地址 在同一个局域网中…...

类型的转换

首先我们要了解java中的数据类型转换是指将一种数据类型转换成另一种数据类型的过程。 什么时候会用到&#xff1f;我觉得两种情况会用到 等号左右两边类型不一致&#xff08;一般发生在赋值时&#xff09;不同类型的数据参与运算&#xff08;一般发生在计算时&#xff09; 转…...

memset函数

让我们先看两个代码 memset(dp, 0x3f, sizeof(dp)); for (int i 0; i < 5; i)cout << dp[i] << " "; memset(dp, 127, sizeof(dp)); for (int i 0; i < 5; i)cout << dp[i] << " "; 代码结果如下&#xff1a; 现在我们来分…...

Java面向对象——多态

即同一个方法可以根据发送对象的不同而采用多种不同的行为方式。 一个对象的实际类型是确定的&#xff0c;但可以指向对象的引用的类型有很多&#xff08;父类&#xff0c;有关系的类&#xff09;。 多态存在的条件&#xff1a; 1. 有继承关系&#xff1b; 2. 子类重写父类…...

python 对矩阵与矩阵之间对应位置的元素,做softmax操作,代码实战

1.对矩阵中对应位置的元素&#xff0c;做softmax 对于一个向量&#xff0c;softmax函数会对其中每一个元素进行指数运算&#xff0c;然后除以所有元素指数和的结果。当将其应用到多个矩阵的相应位置上时&#xff0c;我们实际上是在对每个位置的一组数&#xff08;从各个矩阵的同…...

Angular前端项目在Apache httpd服务器上的部署

Apache Httpd和Tomcat主要区别&#xff1a;Tomcat是一个Java Servlet容器&#xff0c;用于运行Java Servlet和JavaServer Pages&#xff08;JSP&#xff09;&#xff0c;而Apache HTTP服务器是一个通用的Web服务器&#xff0c;用于提供静态和动态内容。 Apache httpd安装&#…...

Oracle 更改数据文件位置的几种常用方式

Oracle 更改数据文件位置的几种常用方式 A.归档模式下 1、offline 表空间&#xff1a;alter tablespace tablespace_name offline&#xff1b; 2、复制数据文件到新的目录&#xff1b; 3、rename 修改表空间&#xff0c;并修改控制文件&#xff1b; 4、online 表空间&#xf…...

【opencv】图像畸变校正

接上篇文章&#xff1a;【鱼眼&#xff0b;普通相机】相机标定 附代码&#xff1a; 方法一&#xff1a; 使用cv2.undistort """Create May 11, 2024author Wang Jiajun """import cv2 import numpy as npdef correct(img,camera_fileE:/cali…...

Charger之二输入电压动态电源原理(VIN-DPM)

主要内容 Charger的VIN-DPM 前篇内容&#xff1a;电池管理IC&#xff08;Charger&#xff09;了解一下&#xff1f; 领资料&#xff1a;点下方↓名片关注回复&#xff1a;粉丝群 正文 一、 VIN-DPM概念 VIN-DPM是指输入电压动态电源管理&#xff08;Input voltage dynamic…...

【半夜学习MySQL】表结构的操作(含表的创建、修改、删除操作,及如何查看表结构)

&#x1f3e0;关于专栏&#xff1a;半夜学习MySQL专栏用于记录MySQL数据相关内容。 &#x1f3af;每天努力一点点&#xff0c;技术变化看得见 文章目录 创建表查看表结构修改表删除表 创建表 语法&#xff1a; create table table_name(field1 datatype,field2 datatype,fiel…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

python爬虫——气象数据爬取

一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用&#xff1a; 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests&#xff1a;发送 …...

tomcat指定使用的jdk版本

说明 有时候需要对tomcat配置指定的jdk版本号&#xff0c;此时&#xff0c;我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...

Unity VR/MR开发-VR开发与传统3D开发的差异

视频讲解链接&#xff1a;【XR马斯维】VR/MR开发与传统3D开发的差异【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili...

算法刷题-回溯

今天给大家分享的还是一道关于dfs回溯的问题&#xff0c;对于这类问题大家还是要多刷和总结&#xff0c;总体难度还是偏大。 对于回溯问题有几个关键点&#xff1a; 1.首先对于这类回溯可以节点可以随机选择的问题&#xff0c;要做mian函数中循环调用dfs&#xff08;i&#x…...