赞
踩
我们常说的接口大致分为两种,一种是程序内部接口,提供给不同文件或类进行调用,另外一种是应用程序接口(API:Application Program Interface),例如前端请求调用后端接口来实现对数据的增删改查。
- 人类与电脑等信息机器或人类与程序之间的接口称为用户界面。
- 电脑等信息机器硬件组件间的接口叫硬件接口。
- 电脑等信息机器软件组件间的接口叫软件接口。
接口泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法,使其能被内部修改而不影响外界其他实体与其交互的方式。——接口_360百科
计算机出身的一般都是先学C/C++,再学Java,。。。“面向对象”中一个重要概念就是接口(Interface)还有一个概念:封装,封装的类会提供get与set方法,这其实也可以看作是提供的接口。具体的每个人都会有不同的理解,今天我想整理的思路重点是关于API,应用程序接口。
API接口最常见于前后端,API接口大多数是由后端编写,前端开发人员进行请求调用。
我们通过API接口来实现特定的功能,而调用者不需要了解其内部实现细节。也可以把API接口理解为是对特定服务(service)的一种封装,将服务封装起来提供给他人调用,这样不需要重新开发即可实现功能,也可以很好的保护数据的安全。
后端API接口一般采用Java、PHP、C#、Pyhon、C/C++、Ruby、Scala等一种或多种后端语言开发搭建,提供了数据存储、通讯、各类服务等功能。一般使用HTTPS协议进行通讯(部分还在使用HTTP协议),使用JSON格式序列化返回接口结果和数据(部分使用xml格式返回)。
在开发安卓应用时需要使用到安卓系统提供的API,在进行Windows桌面应用开发时需要用到微软系统提供的API,在进行微信小程序开发时可使用微信开放接口API。这些暂不提。
API接口是项目开发过程中必要的组成部分之一,是客户端应用与服务端应用通信和桥梁。
除此之外,从专业角度来说,API不仅代表着接口本身,还蕴含了服务端的整体系统架构、数据存储、服务端管理、第三方系统的整合等,只是对外看来,表现出来的是API接口。
可以说,API接口直接使用方是客户端应用,地位是客户端与服务端之间的通信桥梁,是信息化的桥梁,所担负的作用是把业务功能通过接口服务形式具体化,为应用编程开发提供技术支持。
另外,不同系统和编程语言之间的数据通讯往往也采用API形式进行数据交接。
常见的API有以下几种形式:
基于HTTP/HTTPS协议提供的API,这类API常常以“网址”形式提供的,像现在主流的RESTful就属于这类接口。
基于HTTP协议开发的接口现在应用是最为广泛的,这类API使用起来简单明了,因为它是轻量级的、跨平台、跨语言的,但凡是第三方提供的API都会有HTTP版本的接口。
RESTful API也是基于HTTP协议的,只不过RESTful它并不是一种规范,它是一种设计准则,用不同的HTTP动词(GET、POST、DELETE、PUT等)来表达不同的请求。
RPC它是指远程过程调用,将一部分代码逻辑放在远程服务器上部署,然后在需要的地方调用即可(调用远程方法就像调用本地方法一样),本质上是Client/Server模式,而且支持多种协议(如:HTTP、TCP、UDP、自定协议)和数据传输方式(如:Json、XML、Binary、Protobuf等)。
Web Service并不具象地指某种API,我们将以WEB形式提供的服务都称之为Web Service,像RESTful也属于Web Service。不过Web Service接口和HTTP接口存在一些细小区别就是,Web Service接口支持更复杂的对象,而HTTP接口更多的就是传输字符串或者JSON文本。
纯请求接口即只执行数据查询,必须天气查询,可分为携带参数和不携带参数(也有其他分类方式)
举个例子,我们想要知道一周天气如何,如果由自己来实现这个功能很难,因为天气数据只有气象部门才知道。那该如何知道天气信息呢?气象部分提供数据API给我们使用,我们只要输入地区就会知道该地区一周的天气情况,但我们并不需要了解这天气预报是如何实现的。
这里案例使用:天气预报 数据接口_免费API接口调用-聚合数据
接口地址:http://apis.juhe.cn/simpleWeather/query
返回格式:json
请求方式:http get/post
请求示例:http://apis.juhe.cn/simpleWeather/query?city=北京&key=ae876bca9e9756a21f49cd39c6e3bc06
接口备注:通过城市名称或城市ID查询天气预报情况
直接在浏览器输入请求链接可得到请求数据,我们可以打开开发者工具来查看:
通过接口工具,比如Postman:
开发过程中一般默认将请求划分为多个字段,拼接调用,例如天气预报这个,可以抽离出以下内容:
baseUrl:'http://apis.juhe.cn',
path:'/simpleWeather/query',
params:{
city:'北京',
key:'ae876bca9e9756a21f49cd39c6e3bc06'
}
在开发时组合起来:
fetch(baseUrl + path + '?city=' + params.city + '&key=' + params.key ,{
method: 'get'
}).then(
r => r.json()
)
// 或是使用ES6语法:
fetch(`${baseUrl}${path}?city=${params.city}&key=${params.key}`,{
method: 'get'
}).then(
r => r.json()
)
当然在使用了框架或是大型项目中这些会被拆解到不同文件中,因此将他们联系起来才能进行开发。
比如会有api这样的一个目录专门存放接口请求的js文件,或是在mvc/mvvm的结构下使用model目录来写与数据操作和行为相关的逻辑
- 使用类似axios的http库,还会存在二次封装,使用请求/响应拦截器等。
在线接口测试工具:
单一职责原则告诉我们实现类要职责单一;里氏替换原则告诉我们不要破坏继承体系;依赖倒置原则告诉我们要面向接口编程;接口隔离原则告诉我们在设计接口的时候要精简单一;迪米特法则告诉我们要降低耦合。而开闭原则是总纲,他告诉我们要对扩展开放,对修改关闭。接口在设计模式中,有很多的灵活应用。
入门不久,只是初步理解,后续有新理解持续更新!
参考资料及推荐阅读:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。