你不懂API接口是什么?怎么和程序员做朋友

news2024/11/30 2:47:55

说到开发平台就一定离不开接口,作为PM,我们不需要对接口了解的特别细。只需要知道接口是什么,有什么用,有哪些要素就行。

1. 接口是什么

(1) 硬件接口

生活中我们经常会接触接口,最常见的就是HDMI接口和USB接口,而且我们知道接入某个接口就能实现某种功能。

例如笔记本电脑可以通过HDMI接口连接电视,将画面同步显示到电视上;Switch等游戏设备也可以通过HDMI接口连接电视,实现在电视上玩游戏。

大多数人并不需要知道HDMI接口是怎么实现的,只需要接入之后能干什么就行。(HDMI是一种高清视频接口,可用来传输图像信号和音频信号。)

图片

(2) 程序接口api(application program interface)

其实从实际意义上讲程序的接口也和硬件一样,将内部实现的功能封装起来,像一个盒子一样只留出一个口子,人们接入这个口子就能使用这个功能。

调用的人可以很方便使用这些功能,并且可以不需要知道这些功能的具体实现过程,接口API就是按照作者规定的流程去调用这些功能。

实际开发中,当前端和后端有数据交互时,前端人员都会直接向后端询问接口写好了没,而不会问他具体的怎么实现的。

【举个例子:点餐吃饭】

我们到商场店里吃饭,现在基本上都是扫码点餐;首先扫描二维码进入页面,输入就餐人数,然后劈里啪啦一顿点餐并提交订单。点完后,服务员会跟你核对菜单,然后同步到后厨,最后我们就坐等上菜。

例子中的扫码点餐过程就可以看成是API接口的工作过程,一个点餐的API接口,通过选中菜品(输入参数),最后服务员上的一道道菜(输出数据),这过程就是点餐API接口的作用。

来吃饭的顾客是接口的调用者,接口的提供者就是商家。大多数接口一定要有输入和输出,但是严格意义上不是这样的,没有输入也有输出。

接口是数据传递是一种表现。

【再举个超简单的例子:点灯开发】

接口的请求可以理解为接口就是一个电灯的开关,它在接口里面给你提供了一个参数,参数的值一个是 “开”、另一个是“关”,分别对应“灯亮”、“灯灭”。

通过这两个例子,想必大家对接口的概念有所理解了吧,接下来我们来看看接口有那几部分构成的。

2. 接口地址组成部分

接口地址由请求协议、IP地址、端口、接口名称、参数组成。

图片

(1) 请求协议

http:普通的http请求;

https:加密的http请求,传输数据更加安全;

ftp:文件传输协议,主要用来传输文件。

(2) 请求IP

就是指提供接口的系统所部署的服务器地址,通常用映射IP的域名来代替;

(3) 端口

如果不填端口,默认是80,否则需要填写端口号;

(4) 接口名称

好的接口命名能让开发者便于阅读和理解,如 “news/add” 和 “news/update”,一看就知道新闻添加和新闻信息编辑的接口。

(5) 接口参数/参数值

参数在接口路径后,用“?”来表示路径地址结束,后面跟着的都是参数,用“&”来区分参数个数(GET请求传参方式)。

3. 接口请求方式

一般采用的是HTTP协议的POST和GET请求;GET请求方式参数通常拼接在接口地址后面;

而POST请求则不会拼接在后面,是保证了数据的安全性;

4. 接口返回内容

将参数传过去之后,后端返回给前端一般用JSON格式,如下所示:

{

   //返回状态码

   code: integer,

   //返回信息描述

   message: "提现成功",

   //返回结果数据

   data: object

}

(1) CODE状态码

code返回状态码,通常是在开发按照"#1000~1999 区间表示参数错误、#2000~2999 区间表示用户错误、#3000~3999 区间表示接口异常"等规则。(规则仅供参考) 例子如下所示:

图片

(2) Message信息

Message字段相对理解比较简单,就是发生错误时,如何友好的进行提示。一般设计时和code状态码一一对应,如上图所示。

(3) data信息

返回的重要结果数据之一,下图是完整的接口返回数据。

图片

5. 接口文档规范

项目开发需要前端和后端共同完成的,接口文档通常由后端定义并编写接口文档,然后再前后端联调的时候,根据接口文档进行数据交互。

接口文档的另一个重要作用就是规范,项目开发过程中前后端工程师有一个统一的文件进行沟通交流开发,项目维护中或者项目人员更迭的时候,方便后期人员查看、维护。

接口文档的接口分为五部分:请求方法(POST、GET)、接口地址、请求参数、返回参数、返回结果示例。以银行卡四元素校验为例(https://www.juhe.cn/docs/api/id/213):

图片

图片

6. 如何通过接口判断问题是后端还是前端造成的

PM:"前端,帮我看下这块信息为什么是空白的。"

前端:"好勒,马上看。"

2000 years later

前端:"我代码没问题呀,参数也传了,你问下后端。"

PM:"后端,帮我看下这里数据为啥没有。"

后端:"我接口没问题呀,等等,这数据本来就是空的,快找人新增去呀。"

后端一脸嫌弃。

很多时候,当我们发现问题的时候,第一印象就是找开发人员询问原因,很多人基本不会去先判断这问题是属于前端的还是后端的,导致沟通成本变大。

通过上面的介绍,我们可以通过接口的返回数据中的状态码,来初步判断问题属于哪一方。现在介绍一下这么通过浏览器查看接口数据。

首先打开任意浏览器(建议使用谷歌),鼠标右击后点击“查看”或者直接按“F12键”打开发者工具,然后选择"network"—>“XHR”,就会看到很多接口请求,按需找到请求接口,查看对应返回数据即可。

大多数情况下,可以通过接口状态码和消息提示去判断是后端还是前端的问题。

但是有些问题比较隐蔽,即使状态码返回为成功的码,但问题依旧存在,这种情况很有可能是后台某细节错误

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1215674.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

到什么程度才叫精通 Linux?

到什么程度才叫精通 Linux? 一般说自己精通某项技术的,要么是应届生,要么是刚工作没多久的,再者就是半桶水的人。 Linux 博大精深,我敢肯定,Linus 本人都不敢说自己精通 Linux 。最近很多小伙伴找我&#…

【Linux】文件系统中inode与软硬链接以及读写权限问题

文章目录 前言一、 简单理解文件系统二、文件操作具体步骤1.新建文件2.删除文件3.查找文件 三、目录的重新理解1.目录下没有w权限,无法对其下的文件进行创建与删除2.目录下没有r权限,无法对其下的文件进行查看3.目录下没有x权限,无法进入这个…

基于Optuna的transformers模型自动调参

文章目录 一、导入相关包二、加载数据集三、划分数据集四、数据集预处理五、创建模型(区别一)六、创建评估函数七、创建 TrainingArguments(区别二)八、创建 Trainer(区别三)九、模型训练十、模型训练(自动搜索)(区别四)启动 tensorboard 以文本分类为例…

使用 Redis 构建轻量的向量数据库应用:图片搜索引擎(一)

本篇文章聊聊更轻量的向量数据库方案:Redis。 以及基于 Redis 来快速实现一个高性能的本地图片搜索引擎,在本地环境中,使用最慢的稠密向量检索方式来在一张万图片中查找你想要的图片,总花费时间都不到十分之一秒。 写在前面 接着…

C++进阶-STL 常用算法列举

STL 常用算法列举 概述常用遍历算法for_each 遍历容器transfrom 搬运容器到另一个容器中 常用查找函数find 查找元素find_if 按条件查找元素adjacent_find 查找相邻重复元素binary_search 二分查找法count 统计元素个数count_if 按条件统计元素个数 常用排序算法sort 对元素内内…

Linux C/C++全栈开发知识图谱(后端/音视频/游戏/嵌入式/高性能网络/存储/基础架构/安全)

众所周知,在所有的编程语言中,C语言是一门颇具学习难度,需要很长学习周期的编程语言。甚至很多人经常听到一句调侃的话语——“C,从入门到放弃”。 C界的知名书籍特别多,从简单到高端书籍,许多书籍都是C之…

8086与8088

一、8086与8088概述 8088/8086都是16位微处理器,内部运算器和寄存器都是16位的,同样具有20位地址线8088/8086都是由执行单元(EU)和总线接口部件(BIU)两大部分构成指令系统和寻址能力都相同,两种CPU是兼容的8088被称作准十六位的、是紧继8086…

为什么红帽Linux值得学习?红帽Linux是什么

为什么红帽Linux值得学习 物联网、云计算、大数据,或许你都耳熟能详,但是Linux可能你却感觉到有点陌生。这些未来趋势的行业使用的嵌入式、c、JAVA、PHP等底层应用软件都是在Linux操作系统上Linux运维工程师作为移动互联网的关键支撑岗位,缺口…

Redis内存淘汰机制

Redis内存淘汰机制 引言 Redis 启动会加载一个配置&#xff1a; maxmemory <byte> //内存上限 默认值为 0 (window版的限制为100M)&#xff0c;表示默认设置Redis内存上限。但是真实开发还是需要提前评估key的体量&#xff0c;提前设置好内容上限。 此时思考一个问题…

避坑指南!!在树莓派4b上安装Pycharm以及无法使用终端的问题解决!!

一、下载Pycharm–linux安装包 这里是踩的第一个坑&#xff0c;一开始我下载的是pycharm2023-linux版本的。后面发现缺少很多东西&#xff0c;安装不成功。后面下载了低版本的Pycharm才可以。我下载的是2020版本的。注意&#xff1a;在下载安装包时&#xff0c;一定要在window…

小米手机获取电池健康度

目录 方法一&#xff1a;使用Bug反馈功能 1. 打开拨号界面&#xff0c;输入*#*#284#*#* 2. 导出结果&#xff0c;等待即可 3. 找到这个压缩文件 4. 解压缩【我这里直接拷贝到电脑中操作&#xff0c;手机同理】 4.1 解压&#xff1a; 4.2 将得到的新的压缩文档解压 5. 打…

Stages—研发过程可视化建模和管理平台

产品概述 Stages是美国UL Solutions旗下UL Method Park GmbH的产品&#xff0c;用于帮助企业定义、管理、发布、控制、优化其研发过程&#xff0c;同时使其研发过程符合CMMI、ASPICE、ISO26262等标准。Stages的核心理念是把过程理论和实际项目进行有机结合。Stages聚焦于研发过…

web环境实现一键式安装启动

部署的痛点 一般在客户环境安装web环境&#xff0c;少说需要花费1-2小时。一般需要安装jdk、nginx、mysql、redis等 等你接触到了inno setup &#xff0c;你有可能会节约更少的时间去部署。也有可能是一个不懂技术的人&#xff0c;都可以进行操作的。废话不多说&#xff0c;接…

JS原生-弹框+阿里巴巴矢量图

效果&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content&q…

LeetCode - 160. 相交链表(C语言,配图)

思路&#xff1a; 1. 我们算出两个链表的长度lenA&#xff0c;lenB。我们在这里最后判断一下&#xff0c;两个链表的尾节点是否是一样的&#xff0c;如果是相交链表&#xff0c;那它们的尾节点一定是一样的。 2. 算出长链表和短链表的差距n&#xff08;n | lenA- lenB |&#…

【分享课】11月16日晚19:30PostgreSQL分享课:PG缓存管理器主题

PostsreSQL分享课分享主题: PG缓存管理器主题 直播分享平台&#xff1a;云贝教育视频号 时间&#xff1a;11月16日 周四晚 19: 30 分享内容: 缓冲区管理器结构 缓冲区管理器的工作原理 环形缓冲区 脏页的刷新

《洛谷深入浅出基础篇》 p3370字符串哈希——hash表

上链接&#xff1a; P3370 【模板】字符串哈希 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P3370#submit上题干&#xff1a; 就是说&#xff0c;给你N个字符串&#xff0c;然后让你判断&#xff0c;这N个字符串里面有多少不同的字符串&am…

谭巍主任科普:面对HPV感染挑战,迈出关键一步!

在当今社会&#xff0c;HPV(人乳头瘤病毒)感染的问题日益凸显&#xff0c;它不仅限于性传播疾病&#xff0c;更上升为一种公共卫生问题。据统计&#xff0c;全球范围内每年有大量人群感染HPV&#xff0c;其中部分地区感染率高达50%。正因如此&#xff0c;谭巍主任投身于科普事业…

表单校验wed第十九章

常见的表单验证 一。表单选择器 属性过滤选择器 &#xff1a;selected 选中所有的下拉元素 &#xff1a;checked&#xff1a;选项元素 &#xff1a;disabled 不可用元素 &#xff1a;enable 所有可用元素 二。字符串演示 1.判断非空 isNaN(j) :判断是否为数字 2.表…

flutter绘制弧形进度条

绘制: import package:jade/utils/JadeColors.dart; import package:flutter/material.dart; import dart:math as math; import package:flutter_screenutil/flutter_screenutil.dart;class ArcProgressBar extends StatefulWidget{const ArcProgressBar({Key key}) : super…