什么是接口与API接口!

news2024/11/23 15:06:22

今天有个朋友问我什么接口?你们平时都说在写接口,写的是什么鬼啊?我一开始就想,咦小陈同学怎么突然了解编程接口了,不过听到他后一个提问我知道原来他想的是API接口,不过被我主观意识习惯想成了编程定义上的接口。

所以就突发其想,想写篇东西说明一下编程定义的接口,与API接口含义。

为了区分统一两个概念,下面全文接口是指编程定义的接口,API是指API接口。

一、什么是接口?

1. 接口的概念
给一个定义,接口是指定一组函数成员而不实现成员的引用类型,其他类型-类和结构可以实现接口。
接口是对强类型的面向对象编程语言特有东西,如C#,Java,通俗地说它的出现就是对这些强类型语言定义一个标准的入口然后供后续子孙继承使用。

结合生活再通俗一点说,就类似现在现在手机的充电口有Micro USB接口USB Type C接口以及IOS系统手机的Lightning接口,这三种接口就是一个接口定义,规定了这个充电头的形状,大小,然后怎么实现充电我不管了,不管你之前做成普通的充电,还是快充,也不管你给什么手机品牌,什么型号的手机使用。

2.接口的特点
C#接口特点1:都是“虚的”不能被实例化;
C#接口特点2:正因为接口是虚的,所以接口内的索引,属性,时间等只能有声明,而不能在接口内实现,具体如何实现是派生接口或者派生类的事;
C#接口特点3:都具有模板的性质,如果一个接口或者类从某一个接口继承,它将自动具有被集成者的特征(包括索引,属性,函数,实践等);
C#接口特点4:接口支持多重继承,而C#中,类之支持单一继承,接口实际表示的是一种承载能力。

3.接口定义与实现
一个接口可以从零或多个接口继承,那些被称为这个接口的显式基接口。当一个接口有比零多的显式基接口时,那么在接口的定义中的形式为,接口标识符后面跟着由一个冒号":"和一个用逗号","分开的基接口标识符列表。
一个类继承接口,那么就必须实现它的所有基接口定义的成员。
看下面代码例子:

interface IAnimal  
{   
   void Alive ( ) ;  
} 

interface IFlyingAnimals:IAnimal
{
  //定义一个索引
  string this[int index] { get; set; }
  //定义一个属性
  bool HasFeather { get; set;}
  //定义一个事件
 event EventHandler Changed;
  //定义一个方法
  bool CanFly(string s);
}
//支持多继承
interface IBird:IAnimal,IFlyingAnimals
{
  void CanCatchFish();
}

public class Animal:IAnimal
{
  public void Alive(){..实现内容..}
}

public class Bird:IBrid
{
  private void Alive ( ) ;  
  //实现一个索引
  public string this[int index] { get; set; }
  //实现一个属性
  public bool HasFeather { get; set;}
  //实现一个事件
 public event EventHandler Changed {..实现内容..};
  //实现一个方法
  public bool CanFly(string s){..实现内容..};
  public void CanCatchFish(){..实现内容..};
}
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:310357728【暗号:csdn999】

二、什么是API接口

API:Application Program Interface,API就是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的 API 而使操作系统去执行应用程序的命令。

通俗来说,API就是系统预留一个通道,按照约定对系统进行一些操作,如常见的就是系统的数据进行增删改查。

可能上面这些说法如果非程序员看还是会一头雾水,那么再举个生活例子,假如现在银行就是一个应用系统,我们想去银行拿一笔钱,那么我们需要做些什么操作:

  1. 去银行
  2. 到银行仓库拿一笔钱
  3. 把这笔业务写到记帐本上
  4. 离开银行

那么,显然这存在着问题:

想开开仓库门需要废很大力气,并不是所有的人都能打开,还有些人不识字不会记账。
在这个模式下,我们假定所有人都是诚实的,显然这并不成立。(说不定哪一个人拿了10000块钱记账的时候写了100块)。
这时你遇到麻烦了。

那我们应该怎么解决这个问题呢?

这个时候,我们其实只需要找一个专业的银行员工小娜来负责这些操作就好,建一个柜台将仓库和记账本和顾客分开,这样顾客就不需要再去管仓库和记账本了。想存钱的话直接找小娜就行。

这种模式下,要是有人想取钱,他们必须:

  1. 去银行
  2. 告诉小娜我是 MMM 我想要取¥¥¥。
  3. 小娜打开仓库把钱拿出来
  4. 小娜把业务(transaction )记录好
  5. 告诉你业务办好了
  6. 顾客离开银行

现在不会发生打不开仓库门或者是记错账的情况了,你觉得很满意。

这个银行员工小娜就是相当于一个API接口,我们雇一个收纳员帮顾客解决了开仓门,放钱,记账这一系列繁琐的过程。这大大节省了顾客的时间,同时提高了银行的效率。同理,如果我们将操作的具体实施步骤抽象化,这将会大大降低开发人员的负担(去记忆所有的步骤花费的力气),从而大大提高了效率。

API 应用范围很广:从操作系统中简单的 fork() 到我们接触的百度地图API,天气API,这些 API 都大大简化了程序员的工作,不用重复造轮子。

我们使用API需要遵循API的协议,否则就会报错或得不到想要的效果,就好比你在银行的存款明明只是100块,但你偏要去取1000块,这样就是遵循协议约定了。

在 API 术语中,协议 是规定了各部分之间如何进行交流的一系列规则的集合。各部分之间想要完成交互必须理解并且遵守同一个协议。

当我们为自己系统设计API的时候,一般来说我们是需要为API建立防火墙,在保护您的资源免受滥用的同时允许合法请求通过。
防火墙原则:

  1. API 能确认所有的操作都是合法的。
  2. 在发生错误的时候 API 会根据错误报告机制发出指示,减轻开发人员的负担。
  3. API中内置授权和访问控制,以确保只有授权人员才能访问特定数据。
  4. 我们可以实施速率限制来控制服务器资源的使用,以确保用户不会滥用服务。

三、总结

所以,接口与API以作用来说,就是定义一个规范,接口属于代码层次的定义,而API就是实现层次来定义,使工作更有效率,重复使用。

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
 

在这里插入图片描述

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

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

相关文章

HCIA-H12-811题目解析(7)

1、【多选题】RSTP协议包含以下哪些端口状态? 2、【单选题】当采用LACP模式进行链路聚合时华为交换机的默认系统优先级是? 3、【单选题】下面关于二层以太网交换机的描述说法不正确的是? 4、【单选题】以下哪种类型的ACL不能匹配网络层信息…

mysql,树形结构表中,查询所有末节点数据(叶子结点)

需求:在一个可以存放多级目录的表中,查询出某个课程目录下所有末节点(因为只有末节点可以挂载资源) 例如下图: 其中 1.11.2.12.1 都是末节点,因为他们已经没有下一级了 catalog表中重要字段有:c…

工具应用:Robot Framework->对协议级接口进行测试

实验简介 本节实验主要为大家讲解如何利用Robot Framework结合常用的关键字完成对Agileone系统中的“需求提案”模块进行协议级接口的自动化测试脚本开发。 实验目的 (1) 掌握RF的Requests库的常用关键字及用法。 (2) 能够熟练…

成都工业学院Web技术基础(WEB)实验六:ECMAScript基础语法

写在前面 1、基于2022级计算机大类实验指导书 2、代码仅提供参考,前端变化比较大,按照要求,只能做到像,不能做到一模一样 3、图片和文字仅为示例,需要自行替换 4、如果代码不满足你的要求,请寻求其他的…

使用kubeadm部署一套Kubernetes v1.23.0集群

使用kubeadm部署一套Kubernetes v1.23.0集群 1、前置知识点 1.1 生产环境可部署Kubernetes集群的两种方式 目前生产部署Kubernetes集群主要有两种方式: • kubeadm Kubeadm是一个K8s部署工具,提供kubeadm init和kubeadm join,用于快速部…

cobalt strike基础使用

coblat strike使用 服务搭建 首先将server端文件放进kali中 对其赋权 执行时需要root权限 设置ip 启动服务 ./teamserver 10.4.7.138 123456回到win11启动cs,输入刚才配置的信息 上线方式 木马(exe上线) 查看一下开放的端口 添加监听 …

Python 进阶(十六):二进制和ASCII码的转换(binascii 模块)

大家好,我是水滴~~ 本文详细介绍了Python中的binascii模块及其使用方法。通过binascii模块,我们可以方便地进行二进制和ASCII字符串之间的转换操作。文章中包含大量的示例代码,希望能够帮助新手同学快速入门。 《Python入门核心技术》专栏总…

【web安全】逻辑越权漏洞

前言 菜某分享,有误请指正 越权漏洞功能 顾名思义,他能使用别的用户的权力。我们网站有许多用户,有普通用户,管理员,最高级的管理员等多种账户。这个越权漏洞就是指我们可以行使别的用户的权力。 越权漏洞的分类 …

Knowledge Graph知识图谱—9. Data Quality and Linking

9. Data Quality and Linking 9.1 How well are the linked open data in practice? Linked Open Vocabularies(LOV) project – analyze usage of vocabularies 9.2 Quality Linked Data Conformance vs. Quality Conformance: – i.e., following standards and best prac…

归并排序的实现

一.思想 归并排序是一种基于分治思想的经典排序算法。其主要思想可以总结为以下几个步骤: 分解(Divide): 将原始序列划分为若干子序列,直到每个子序列包含一个或零个元素,即认为这些子序列是有序的。 解决…

mmpi量表在各企事业单位 入职体检中的应用

mmpi量表主要应用在医院精神科门诊中,用来检测筛查精神类疾病,比如:焦虑抑郁,疑病妄想强迫性、精神分裂、精神病态、社会内向性、癔症,精神衰弱,躁狂等等。 民航,司法,军警&#xf…

HTML面试题---专题一

文章目录 一、前言二、 HTML5 中 <header> 和 <footer> 标签的用途是什么&#xff1f;三、如何在 HTML 中嵌入 SVG&#xff08;可缩放矢量图形&#xff09;文件&#xff1f;四、解释 contenteditable 属性的用途五、如何创建随屏幕尺寸缩放的响应式图像&#xff1f…

Java接入微信支付详细教程——提供资料

目录 1 前提 2 准备环境 2.1 基本依赖 2.2 准备配置 2.3 测试环境 3 交易类型说明 4 使用 支付下单 支付通知 查询支付 取消支付 申请退款 退款通知 查询退款 5 前端页面 6 前后端联调 6.1 点击支付 6.2 支付通知 6.3 查询支付 6.4 退款 说明&#xff1a;微…

【性能测试】Jmeter 配置元件(一):计数器

Jmeter 配置元件&#xff08;一&#xff09;&#xff1a;计数器 在 Jmeter 中&#xff0c;通过函数 ${__counter(,)} 可以实现每次加 1 1 1 的计数效果。但如果步长不为 1 1 1&#xff0c;则要利用到我们的计数器。 函数作用${__counter(,)}计数器&#xff0c;每次加 1${__d…

jmeter不精通?来看这套很全的jmeter教程,ant批量执行Jmeter脚本

JDK&#xff0c;Jmeter默认已经装了ANT下载&#xff1a;Apache Ant - Binary Distributions ant环境变量需要配置 ant_home&#xff0c;你解压之后的地址 然后PATH环境变量里加上bin目录&#xff0c;D:\work\apache_ant\bin 最后打开命令行窗口&#xff0c;输入 ant -v&…

湖南大学-电路与电子学-2021期末A卷★(不含解析)

【写在前面】 电路与电子学好像是从2020级开设的课程&#xff0c;故实际上目前只有2020与2021两个年级考过期末考试。 本份卷子的参考性很高&#xff0c;这是2020级的期末考卷。题目都是很典型的&#xff0c;每一道题都值得仔细研究透。 特别注意&#xff1a;看得懂答案跟写得…

10天玩转Python第3天:python循环语句和字符串、列表全面详解与代码示例

目录 1 循环1.1 for 循环1.2 break 和 continue 2 容器3 字符串3.1 定义3.2 下标3.3 切片3.4 字符串的查找方法 find3.5 字符串的替换方法 replace3.6 字符串的拆分 split3.7 字符串的链接 join 4 列表4.1 定义4.1 列表支持下标和切片, 长度4.3 查找 - 查找列表中数据下标的方法…

C语言 二叉树详解(自我理解版)!!!二叉树的实现

目录 1.树的概念和结构&#xff08;了解&#xff09; 1.1树的概念 1.2关于树的每个组成结构的叫法 1.3树的结构体表示 1.4树在实际中的运用 2.二叉树的概念和结构和实现&#xff08;本期偏重点之一&#xff09; 二叉树的概念 ​编辑 特殊的二叉树 1.完全二叉树 2.满二…

MIT18.06线性代数 笔记2

文章目录 正交向量与子空间子空间投影投影矩阵和最小二乘正交矩阵和Gram-Schmidt正交化行列式及其性质行列式公式和代数余子式克拉默法则、逆矩阵、体积特征值和特征向量对角化和A的幂微分方程和exp(At)马尔科夫矩阵 傅里叶级数复习二 正交向量与子空间 向量正交&#xff1a;x…

Python中的并发编程(1)并发相关概念

并发和并行 并发和并行 并发指逻辑上同时处理多件事情&#xff0c;并行指实际上同时做多件事情。 并发不一定通过并行实现&#xff0c;也可以通过多任务实现。例如&#xff1a;现代操作系统都可以同时执行多个任务&#xff0c;比如同时听歌和玩游戏&#xff0c;但歌曲播放和游…