在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.mzph.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;企业需…