Http 客户端编程使应用程序能够通过 JavaScript 从 http 服务器连接和获取数据。它减少了客户端和服务器之间的数据传输,因为它只获取所需的数据而不是整个设计,从而提高了网络速度。它改善了用户体验,并成为每个现代 Web 应用程序不可或缺的功能。
如今,许多服务器端应用程序通过REST API(通过HTTP协议的功能)公开其功能,并允许任何客户端应用程序使用该功能。
React 没有提供自己的 http 编程 api,但它支持浏览器内置的 fetch() api 以及像 axios 这样的第三方客户端库来做客户端编程。在本章中,让我们学习如何在 React 应用程序中进行 http 编程。开发人员应该具有 Http 编程的基本知识才能理解本章。
Expense Rest API 服务器
做 Http 编程的前提是 Http 协议和 REST API 技术的基础知识。Http编程涉及服务器和客户端两部分。React 支持创建客户端应用程序。Express 是一个流行的 Web 框架,支持创建服务器端应用程序。
让我们首先使用 express 框架创建一个 Expense Rest Api 服务器,然后使用浏览器的内置 fetch api 从我们的 ExpenseManager 应用程序访问它。
打开命令提示符并创建一个新文件夹 express-rest-api。
mkdir apiserver
cd apiserver
使用以下命令初始化新的节点应用程序 -
npm init 将提示并要求我们输入基本的项目详细信息。让我们输入 apiserver 作为项目名称,server.js 作为入口点。将其他配置保留为默认选项。
接下来,使用以下命令安装 express、nedb 和 cors 模块 -
- Express 用于创建服务器端应用程序。
- NEDB 是用于存储费用数据的数据存储。
- CORS 是 Express 框架的中间件,用于配置客户端访问详细信息。
接下来,让我们创建一个文件,data.csv并使用初始费用数据填充它以进行测试。该文件的结构是每行包含一个支出分录。
Grape Juice,30,2020-10-12,Food
Cinema,210,2020-10-16,Entertainment
Java Programming book,242,2020-10-15,Academic
Mango Juice,35,2020-10-16,Food
Dress,2000,2020-10-25,Cloth
Tour,2555,2020-10-29,Entertainment
Meals,300,2020-10-30,Food
Mobile,3500,2020-11-02,Gadgets
Exam Fees,1245,2020-11-04,Academic
接下来,创建一个文件expensedb.js并包含代码,以将初始支出数据加载到数据存储中。该代码检查数据存储中的初始数据,并仅在数据存储中不可用时加载。
接下来,创建一个文件,server.js并包含实际代码以列出、添加、更新和删除费用分录。
现在,是时候运行该应用程序了。
接下来,打开浏览器并在地址栏中输入 http://localhost:8000/。
"message": "Ok"
}
它确认我们的应用程序运行良好。
最后,将 url 更改为 http://localhost:8000/api/expense 并按回车键。浏览器将以 JSON 格式显示初始费用条目。
让我们在下一节中通过 fetch() api 在费用管理器应用程序中使用我们新创建的费用服务器。
fetch() 接口
让我们创建一个新的应用程序来展示 React 中的客户端编程。
首先,按照创建 React 应用程序一章中的说明,使用 Create React App 或 Rollup bundler 创建一个新的 react 应用程序 react-http-app。
接下来,在您最喜欢的编辑器中打开应用程序。
接下来,在应用程序的根目录下创建 src 文件夹。
接下来,在 src 文件夹下创建组件文件夹。
接下来,创建一个文件,ExpenseEntryItemList.css src/components 文件夹下,并包含通用表格样式。
接下来,创建一个文件,ExpenseEntryItemList.js src/components 文件夹下并开始编辑。
接下来,导入 React 库。
接下来,创建一个类 ExpenseEntryItemList 并使用 props 调用构造函数。
接下来,在构造函数中使用空列表初始化状态。
接下来,创建一个方法 setItems 来格式化从远程服务器接收的项目,然后将其设置为组件的状态。
接下来,添加一个方法 fetchRemoteItems 以从服务器获取项目。
这里
- fetch api 用于从远程服务器获取项目。
- setItems 用于格式化和存储状态中的项目。
接下来,添加一个方法 deleteRemoteItem 以从远程服务器中删除该项目。
这里
- fetch API 用于从远程服务器删除和获取项目。
- setItems 再次用于格式化和存储状态中的项目。
接下来,调用 componentDidMount 生命周期 api,在组件的挂载阶段将项目加载到组件中。
接下来,编写一个事件处理程序以从列表中删除该项。
接下来,编写 render 方法。
最后,导出组件。
接下来,创建一个文件,index.js src 文件夹下并使用 ExpenseEntryItemList 组件。
最后,在根文件夹下创建一个公共文件夹,并创建index.html文件。
接下来,打开一个新的终端窗口并启动我们的服务器应用程序。
npm start
接下来,使用 npm 命令为客户端应用程序提供服务。
接下来,打开浏览器并在地址栏中输入 http://localhost:3000,然后按回车键。

尝试通过单击删除链接来删除该项目。
