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

前端使用 RESTful API 和 GraphQL

前端使用 RESTful API 和 GraphQL 的详细安装与使用步骤,涵盖环境搭建、核心库安装和基础代码示例。

一、RESTful API 的使用
RESTful API 是传统的前后端通信方式,使用 HTTP 方法(GET/POST/PUT/DELETE)操作资源。

  1. 安装 Axios(推荐库)
    Axios 是一个基于 Promise 的 HTTP 客户端,支持浏览器和 Node.js。
 
npm install axios
# 或
yarn add axios
  1. 发送 RESTful 请求
    示例 1:GET 请求
 
import axios from 'axios';// 获取数据
axios.get('https://api.example.com/posts').then(response => {console.log('GET 响应数据:', response.data);}).catch(error => {console.error('GET 请求失败:', error);});// 带参数的 GET 请求
axios.get('https://api.example.com/posts', {params: {userId: 1,_limit: 5}
});

示例 2:POST 请求

javascript// 提交数据
axios.post('https://api.example.com/posts', {title: '新文章',body: '内容',userId: 1
}).then(response => {console.log('POST 响应数据:', response.data);});

示例 3:全局配置

javascript 
// 设置全局基础 URL 和超时时间
axios.defaults.baseURL = 'https://api.example.com';
axios.defaults.timeout = 5000;// 添加请求拦截器(如添加 Token)
axios.interceptors.request.use(config => {config.headers.Authorization = 'Bearer your_token';return config;
});

二、GraphQL 的使用
GraphQL 是一种查询语言,允许客户端精确指定需要的数据,减少冗余请求。

  1. 安装 Apollo Client(推荐库)
    Apollo Client 是主流的 GraphQL 客户端,支持 React/Vue/Angular。
bash 
npm install @apollo/client graphql
# 或
yarn add @apollo/client graphql
  1. 初始化 Apollo Client
javascript 
import { ApolloClient, InMemoryCache, gql } from '@apollo/client';// 创建客户端实例
const client = new ApolloClient({uri: 'https://api.example.com/graphql', // GraphQL 服务端地址cache: new InMemoryCache(),headers: {Authorization: 'Bearer your_token' // 可选认证头}
});
  1. 发送 GraphQL 请求
    示例 1:查询(Query)
javascript 
// 定义查询语句
const GET_POSTS = gql`query GetPosts {posts {idtitlebodyuser {name}}}
`;// 执行查询
client.query({query: GET_POSTS
}).then(result => {console.log('GraphQL 查询结果:', result.data.posts);});

示例 2:变更(Mutation)

javascript 
// 定义变更语句
const CREATE_POST = gql`mutation CreatePost($title: String!, $body: String!) {createPost(title: $title, body: $body) {idtitle}}
`;// 执行变更
client.mutate({mutation: CREATE_POST,variables: {title: '新文章',body: '内容'}
}).then(result => {console.log('创建的文章:', result.data.createPost);});
  1. 在 React 中使用(结合 Hooks)
javascript 
import { useQuery, useMutation } from '@apollo/client';function PostList() {const { loading, error, data } = useQuery(GET_POSTS);const [createPost] = useMutation(CREATE_POST, {onCompleted: (data) => {console.log('Mutation 完成:', data);}});if (loading) return <p>加载中...</p>;if (error) return <p>错误: {error.message}</p>;return (<div>{data.posts.map(post => (<div key={post.id}>{post.title}</div>))}<button onClick={() => createPost({ variables: { title: '新标题', body: '新内容' })}>创建文章</button></div>);
}

三、对比与选择建议
特性 RESTful API GraphQL
数据获取 多个端点,多次请求 单端点,一次请求获取所需数据
灵活性 后端定义响应格式 客户端自定义查询结构
适用场景 简单数据模型,标准化操作 复杂数据需求,减少冗余请求
缓存机制 依赖 HTTP 缓存 内置客户端缓存(如 Apollo Client)
学习成本 低 中高(需学习 GraphQL 语法和工具链)
四、注意事项
跨域问题:确保后端配置 CORS(如 Access-Control-Allow-Origin)。

错误处理:统一处理 HTTP 状态码和 GraphQL 错误。

安全性:敏感操作(如 Mutation)需添加认证(JWT/OAuth)。

性能优化:RESTful 使用分页,GraphQL 使用分页指令(如 first, after)。

通过上述步骤,可快速实现 RESTful 和 GraphQL 在前端项目中的集成。

以上就是文章全部内容了,如果喜欢这篇文章的话,还希望三连支持一下,感谢!

http://www.xdnf.cn/news/876.html

相关文章:

  • 目标跟踪中的聚类算法:DBSCAN Kmeans GMM
  • C++如何处理多线程环境下的异常?如何确保资源在异常情况下也能正确释放
  • 速查手册:TA-Lib 超过150种量化技术指标计算全解 - 8. Statistic Functions(统计函数)
  • linux驱动框架——i2c驱动模块的probe过程
  • 蓝桥杯 16.对局匹配
  • 八、模式识别系统
  • 亿固集团携手广东省民宿协会共启绿色民宿人居新范式
  • 【Linux内核设计与实现】第三章——进程管理03
  • Python accumulate 函数详解
  • (二十九)安卓开发中DataBinding 和 ViewBinding详解
  • 线性代数-矩阵的秩
  • Vue---vue2和vue3的生命周期
  • 数字ic后端设计从入门到精通2(含fusion compiler, tcl教学)
  • 2025最新︱中国信通院静态应用程序安全测试(SAST)工具能力评估,悬镜安全灵脉AI通过评估!
  • 高保真动态项目管理图表集
  • 批量导出多个文件和文件夹名称与路径信息到Excel表格的详细方法
  • pytest基础-new
  • CSS基础-即学即用 -- 笔记1
  • Synopsys:printvar命令和puts/echo命令的区别
  • 15 - VDMA之SD卡读BMP图片显示实验
  • Unity中的数字孪生项目:两种输入方式对观察物体的实现
  • Linux系统安全及应用
  • android studio sdk unavailable和Android 安装时报错:SDK emulator directory is missing
  • Office文件内容提取 | 获取Word文件内容 |Javascript提取PDF文字内容 |PPT文档文字内容提取
  • 边缘计算场景下的GPU虚拟化实践(基于vGPU的QoS保障与算力隔离方案)
  • ‌信号调制与解调技术基础解析
  • Docker 集成KingBase
  • 瑞吉外卖-分页功能开发中的两个问题
  • 【分布式理论17】分布式调度3:分布式架构-从中央式调度到共享状态调度
  • 8.1 线性变换的思想