前端调接口的学习

本文分享了作者作为新手如何通过实际项目学会了如何从接口文档获取数据,并展示了调用接口、异常处理和团队协作的重要性。包括如何解读接口、正确使用axios、处理空值和优雅编写请求参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0.前言

       入职后领导分配的第一个任务是uni-app项目的三个页面的接口,从刚接手的蒙蔽(产品经理就发了切好后的图,而自己只跟着视频mock了数据)到还算顺利的调好接口,还是学到了很多。由于当时接手时,网上查了很多都不了解,如:我需要什么材料?我需要怎么调接口?我需要注意什么?故写下这篇文章,做个记录。

1. 什么叫调接口?

大白话讲,就是后端写好了页面所需要的数据。如:

{
    data: {
        FirstName: "Doreen",
        LastName: "Xu",
        DOB: "1990-01-01",
        Parents: [
            {Father: ""},
            {Mother: ""}]
    }
}

然后把这串数据生成一串url(具体过程不谈),这时前端通过此url,就可以获取到相应数据,然后将其渲染到页面相应位置,例如插值表达式{{data.DOB}}。听起来so easy?也许是,但是对于菜鸟而言(如我),需要注意的还挺多。

2. 如何调接口?

2.1 背景

给我任务时,静态页面已经是写好的,接口也已经写好,不要自己mock数据并等后端接口。

2.2 任务

成功获取接口数据并渲染到页面

2.3 步骤

(1)找跟你对接的后端或者产品经理或领导什么的要到接口文档!!!!!(我就是蒙蔽在这一步耗了一天时间);

【我们的接口文档是在swagger上,以下步骤以swagger为例】

(2)确定每个页面所需要的接口。如当时一个页面有个列选择器,当时按照前人的代码,保存死数据没变,后来被领导批评,如果这个地方再加一个选项,那你这选择器不就选不到新选项了?然后才意识到,这个地方的选项也需要调用一个接口;

(3)理解通过接口得到的每个数据是什么意义,对应页面的什么位置;

这里,swagger入门级提示:当点击“Execute”后,点击Schema,是可以看到变量对应的中文名的(对一些不好好起变量名的设计接口人员而言,这个是个好工具!)

(4)书写代码,通过axios发请求并获取数据,注意接口地址、请求类型(POST/GET)、请求参数。对于请求参数的书写,如果是有多个参数,更优雅的写法是写成computed方法,然后在computed里面进行变量的书写;

 图引用自:再见丑陋的 SwaggerUI,这款API文档生成神器界面更炫酷,逼格更高!_Knife_com_https

(5)确定数据是否成功获取,按我的笨比方法,是console.log(data),然后在工作台上看打印出的数据,看我领导检查我成果的方法,学习了F12->"network"的作用,还是方便多了。

拿知乎为例:

打开开发者调试工具后选择“Network”,就可以看到你的请求,“Name”栏底下是接口的名字,Status:200(获取数据成功),401(未授权的),403(没有权限访问数据),404(没找到运行页面)。(有一次我打开页面一值没数据,一看status:pending,在点waterfall一看有个时间特别长,后来查了才知道是浏览器的问题,用chrome访问7次就容易此时间过长,edge不会,不过后来重启后问题就没出现过了)。

然后点击任意一个请求,也可以看到请求地址,请求方式、回应头部信息等。 

 当然,如果向我们这样成功调用接口,用以上步骤可以在network里获得到所需数据的。

 (6)渲染到页面,注意空值处理。

(7)最后的最后,我们的最终目标:只要是需要调用接口显示的数据,在视图层上只有变量名,不存在任何一个死数据!

4. 一些调接口中的注意点

(1)老师反复跟我强调的一点:对于每一个获取到的数据,都要思考,如果网络不好或后端漏写导致数据为空/undefined/null时,需要怎么进行异常处理(只有单层的还好,关键是对象中包裹数组的那种),并且需要从用户的角度思考,不要程序员的角度,如:

try {
    //doSomeThing
} catch(e) {
    console.log(e);
}

用户并不会打开控制台看错误的信息,他们更需要的是弹窗(confirm)/提示框(alert)等告诉他们这里有问题,不用继续等了,所以在联调时,也需要考虑用户体验感;

(2)虽然是给你分配的是联调接口,但对页面中的每个功能、每个数据有不清楚的,都需要问个明白,不然最后锅就甩给你了。数据不清楚问提供接口的后端(如:原型上明明“汇总”,而且这种一般在第一项,我后端给成了”合计“,且这个词在数组中出现位置随机,不问清楚谁知道啊= =);功能不确定问切图的前端;显示数据不明确问产品

5.其他有收获的点

(1)要写有意义的变量名、方法名。初学者最容易反的错,为了图快,写i、j、index0这样的变量(别人看了会很懵什么意思)

(2) 在每个组件内,只写class,不写style,如果要写在css里面写;

(3)在每个组件内中,如果触发相应事件,写方法不写表达式;

(4)如果数据需要进行处理(保留小数点位数或补+,-)然后显示,在获取数据的时保留原本数据,在显示时再对数据处理

(5)组件中如果变量值如:index.sync, 其实代表的意思是值已经绑定在组件上了,这个组件上的方法可以直接使用index

PS: 本身说10.1回去把样式再过一遍(flex我现在没串起来,每次临时理解每个属性),js异步那些学学,然后今天老师给了个大屏项目,好的,计划变,研究项目大屏和买的课的大屏,冲!(现在还没跑起来项目的人哭死,上午用热点才拉下来项目,现在还在困惑tween.js为什么npm安装了还是没找到依赖)

<think>好的,用户的问题是如何在前端项目中编写API接口用的代码,并需要示例教程。首先,我需要根据用户提供的引用内容来整合相关信息。用户提到了四个引用,其中引用[2]和引用[4]可能与前端用API相关。 首先,引用[2]提到了FastAdmin后端接口的编写以及前端JS用的例子,这应该是一个具体的实例。引用[4]是关于Python接口的四种方式,但用户现在关注的是前端用,所以可能需要重点看引用[2]的示例。 接下来,我需要确保回答符合用户的要求,即结构清晰、逐步解决问题,并提供真实可靠的示例。用户可能需要知道基本的步骤,比如创建请求、处理响应、错误处理等,同时需要具体的代码示例。 考虑到前端常用的技术,如JavaScript的Fetch API和Axios库,这些都是常用的方法。需要分步骤说明,比如使用Fetch API的基本步骤,使用Axios的方法,以及如何处理异步请求和错误。同时,用户可能需要了解如何传递参数,比如GET和POST请求的区别。 然后,检查是否有需要引用的地方。例如,在提到API用的基本流程时,可以引用用户提供的引用[1]中的内容,说明API接口的作用和重要性。引用[2]中的FastAdmin示例可以作为具体框架中的实例。引用[3]提到API密钥的使用,可能在认证部分需要提及。 需要确保示例代码正确,比如使用模板字符串或正确的语法。同时,注意用户提到的LaTeX格式要求,但在这个问题中可能涉及较少,除非有数学表达式,但当前问题可能不涉及,所以可能不需要处理。 最后,生成相关问题,可能需要围绕错误处理、不同请求方式、跨域问题、参数传递等常见问题展开。确保相关问题与主题相关,帮助用户进一步学习。 总结回答结构:介绍API用的基本概念,分步骤说明不同的方法(Fetch和Axios),提供代码示例,处理认证和错误,最后给出注意事项和相关问题。</think>### 前端API接口用代码编写教程 #### 一、API用基本流程 API接口用的核心步骤包括创建请求、处理响应和错误处理[^1]。以下是具体实现方法: #### 二、使用原生Fetch API ```javascript // GET请求示例 fetch('https://api.example.com/data?page=1') .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error('请求失败:', error)); // POST请求示例(带JSON参数) fetch('https://api.example.com/submit', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer your_token' // 身份验证[^3] }, body: JSON.stringify({ username: 'test', age: 25 }) }); ``` #### 三、使用Axios库(推荐) 1. 安装依赖 ```bash npm install axios ``` 2. 基础用 ```javascript import axios from 'axios'; // GET带参数 axios.get('/api/user', { params: { id: 123 } }).then(response => { console.log(response.data); }); // POST提交表单 axios.post('/api/login', { username: 'admin', password: 'secret' }).then(({ data }) => { localStorage.setItem('token', data.token); }); ``` #### 四、FastAdmin框架示例[^2] ```javascript // 前端用自定义接口 $.ajax({ url: '/api/demo/get_list', type: 'post', data: {category_id: 5}, success: function(res) { console.log('接口返回数据:', res.data); } }); ``` #### 五、关键注意事项 1. 跨域处理:配置CORS或使用代理 2. 参数编码:URL参数需使用`encodeURIComponent` 3. 错误处理:网络错误和业务错误需区分处理 4. 安全防护:敏感参数应加密传输 #### 六、完整工作流程 1. 获取API文档 → 2. 设置认证信息 → 3. 构造请求 → 4. 处理响应 → 5. 更新UI
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值