使用提取-反应客户端消费休息应用编程接口(Github 用户)
原文:https://www . geesforgeks . org/consuming-a-rest-API-github-user-use-fetch-react-client/
在本文中,您将学习开发一个 React 应用程序,它将使用 fetch 从 REST API 中获取数据。我们将使用 GitHub 用户应用编程接口获取用户的公共信息和他们的用户名。您可以在本文末尾找到 API 参考和源代码链接。
在进入开发部分之前,要初始化一个简单的 react 应用程序,您可以遵循下面提到的步骤:
步骤 1: 创建反应应用程序。
npx create-react-app foldername
第二步:进入项目文件夹。
cd foldername
第 3 步:创建一个组件文件夹,现在项目结构看起来像:
项目结构
自定义组件驻留在组件文件夹中,所有的东西都放在 MainComponent.js 中,我们将这个组件放在 App.js、中,它本身位于“根”DOM 节点下,这个节点中的所有东西都将由 React DOM 管理。
我们将开发三个组件:
- 主要组件:负责应用程序中的提取操作和状态变化。
- 搜索栏:获取 GitHub 用户名用户输入的搜索栏。
- 用户信息卡:显示 GitHub 用户信息的可重用组件。
第四步:在 MainComponent.js 组件中,我们有两个状态变量, username (来自用户的输入)和 userData(来自 REST API 的响应)。我们需要获取用户数据,每次用户名有更新。为了实现这一点,我们将使用 useEffect 钩子从 React。
java 描述语言
const [username, setUsername] = useState("");
const [userData, setUserData] = useState({});
useEffect(() => {
getUserData();
}, [username]);
第五步:现在为了得到 GitHub 用户 API 的响应,我们将使用 Fetch 发出 GET 请求,这将是 getUserData()函数的角色。
java 描述语言
var gitHubUrl = `https://api.github.com/users/${username}`;
const getUserData = async () => {
const response = await fetch(gitHubUrl);
const jsonData = await response.json();
if (jsonData && jsonData.message !== "Not Found") {
setUserData(jsonData);
console.log(jsonData)
}
else if (username !== "") {
console.log('Username does not exist');
}
else {
setUserData({})
}
};
getUserData()是一个异步函数,其中 fetch(gitHubUrl) 发出请求并返回一个承诺。请求完成后,承诺以回应对象解决。这个对象基本上是各种响应格式的通用占位符。 response.json() 用于从响应中提取 json 对象,它返回一个承诺,因此出现 await。
所以最后,我们的 MainComponent.js 文件是这样的:
java 描述语言
import React, { useState, useEffect } from "react";
import SearchBar from "./SearchBar";
import UserInfoCard from "./UserInfoCard";
function Main() {
const [username, setUsername] = useState("");
const [userData, setUserData] = useState(Object);
useEffect(() => {
getUserData();
}, [username]);
var gitHubUrl = `https://api.github.com/users/${username}`;
const getUserData = async () => {
const response = await fetch(gitHubUrl);
const jsonData = await response.json();
if (jsonData && jsonData.message !== "Not Found") {
setUserData(jsonData);
console.log(jsonData)
}
else if (username !== "") {
console.log('Username does not exist');
}
else {
setUserData({})
}
};
return (
<div>
<SearchBar username={username}
setUsername={setUsername} />
<UserInfoCard userData={userData} />
</div>
);
}
export default Main;
步骤 6: 现在,进入搜索栏组件,用于接收用户名的用户输入。是一个简单的组件,有一个文本类型的输入字段。一旦有任何变化,它将使用更新后的值触发设置用户名。
搜索栏.js
java 描述语言
import React from "react";
function SearchBar({username, setUsername}){
const onChange = (e) =>{
setUsername(e.target.value)
}
return(
<div className="searchbar">
<input
placeholder="Search"
type="text"
onChange={(event) => {onChange(event)}}
onKeyUp={(event) => {onChange(event)}}
onPaste={(event) => {onChange(event)}}
/>
</div>
);
}
export default SearchBar;
第七步:我们最后一个组件,是一个可复用的 UI 组件,基本上是一个卡片组件,接收的 userData 作为道具,只是以任意选择的格式显示。你可以调整 App.css 文件来了解各种设计方面。
user info card . js-使用者资讯卡. js
java 描述语言
import React from "react";
function UserInfoCard({ userData }) {
return (
<div className="datacontainer">
{userData.avatar_url ? (<div className="dataitem">
<img src={userData.avatar_url}
alt="avatar" /></div>) : (<div></div>)}
{userData.login ? (<div className="dataitem">Login:
{userData.login}</div>) : (<div></div>)}
{userData.name ? (<div className="dataitem">
Name : {userData.name}</div>) : (<div></div>)}
{userData.blog ? (<div className="dataitem">
Blog: {userData.blog}</div>) : (<div></div>)}
</div>
);
}
export default UserInfoCard;
这就是全部,这三个组件放在一起,完成了我们的 React 应用程序,您可以从下面提供的源代码链接下载该应用程序,并在您的系统上运行它。源代码确实包含一个额外的组件,用于将检索到的数据存储在本地存储中,这在本文中没有涉及。所以如果你感兴趣,也去看看吧。
运行应用程序的步骤:要在您的系统上启动应用程序,请运行以下命令:
npm start
输出:
GitHub 用户 API:https://docs.github.com/en/rest/reference/users
获取 API:https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API
源代码:https://github . com/notnotaparas/github-users API
版权属于:月萌API www.moonapi.com,转载请注明出处