API定义|API的分类|电商API接入

121 阅读5分钟

1.什么是API

API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。通过API,就算不知道如何操作,也能将产品或服务与其他产品或服务进行互通。这样就可以简化应用开发,节省时间和成本。API除了有应用“应用程序接口”的意思外,还特指 API的说明文档,也称为帮助文档。

图片

API作为应用编程接口,由应用程序来调用,提供API的称为提供者,使用API的称为消费者。API本质上是一个程序(程序1)中,专门用于与其他应用程序(程序2)进行交互的部分,也就是程序1的外部对接部门。程序员所编写的程序2可以通过API程序的函数声明来和程序1进行交互。API 由一个或多个方法组成,每个方法可以实现一个功能,比如发送消息,上传文件,检索消息等。 定义和作用看起来有些晦涩难懂,我们可以类比一个常见且熟悉的接口User Interface(缩写为 UI)即用户接口。UI本质上是一个系统中专门用于与人类使用者进行交互的部分。UI可以是一个实物上的面板,也可以是由程序所驱动的显示在屏幕上的界面。我们使用的应用一般有是图形化界面的,都可以看作是一种用户接口,比如按钮,窗口,图标等可视化组件。UI 定义了人与应用程序进行交互的方式。UI 由多个可视化组件构成,每个组件提供不同的交互方式,比如,在文本框中可以输入一些消息,点击按钮可以发送消息等。 总之,API定义了应用程序与应用程序之间的交互,UI定义了人与应用程序之间的交互,并且两种交互方式又相互关联,用户操作 UI 表达要实现的功能,而 UI 使用 API 来实际完成该功能。

图片

2.API的分类

(1)根据API提供者和消费者所在的位置,可将API分为两类:本地API:当API的提供者和消费者位于同一台计算机上时,称为本地API。远程API:当API的提供者和消费者位于不同的计算机上时,称为远程API。 (2)根据API接口表现形式分类:

接口协议说明
HTTP接口HTTP当发起Http请求时,Http会通过TCP建立起一个到服务器的连接通道,在请求需要的数据完毕后,Http会立即将TCP连接断开,Http连接是一种短连接、无状态的连接。
RPC接口HTTP、TCP、UDP、自定义协议RPC远程过程调用协议,它本质上是一种Client/Server模式,就相当于调用本地接口一样调用远程服务的接口,支持多种数据传输方式,如Json、XML、Binary等。
WebService接口SOAP协议通过XML封装数据,Http协议传输数据WebService是一个应用程序向外界暴露出一个能通过Web进行调用的API,也就是系统对外的接口,使用XML来封装数据,不依赖于语言,不依赖于平台。
RESTFULHTTPRESTFUL一种设计准则,而不是一种规范,用不同的HTTP动词(如:GET、POST、DELETE、PUT)来表达不同的请求,降低开发的复杂性,提高系统的可伸缩性。
WebSocketTCP、UDPWebSocket是一个持久化的双向通信协议,可实现客户端和服务器端之间即时通讯。在WebSocket中,客户端和服务器只需要完成一次握手,就可以创建持久性的连接,并进行双向数据传输。
FTPTCP/IP协议组中的协议之一FTP是文件传输协议,FTP协议包括两个组成部分,其一为FTP服务器(存储文件),其二为FTP客户端。

(3)根据API接口访问形式分类:

访问形式说明应用
使用用户令牌,通过Web API接口进行数据访问可以有效识别用户的身份,为用户接口返回用户相关的数据。用户信息维护、密码修改、用户管理等与用户信息相关的数据
使用安全签名进行数据提交这种方式提交的数据,URL连接的签名参数是经过安全一定规则的加密的,服务器收到数据后也经过同样规则的安全加密,确认数据没有被中途篡改后,再进行数据修改处理。可以为不同接入方式(Web/APP/Winfrom等),指定不同的加密秘钥,秘钥是双方约定的,并不在网络连接上传输,连接传输的一般是这个接入的AppID,服务器通过这个AppID来进行签名参数的加密对比,微信后台的回调处理机制就类似于这种处理方式。获取令牌、用户注册、处理业务数据等
提供公开的接口调用,不需要传入用户令牌、或者对参数进行加密签名这种接口一般较少,只是提供一些很常规的数据显示而已。查询系统版本、时间、天气等数据

电商API接口的接入

taobao.item_get

公共参数

image.png

image.png

<?php

// 请求示例 url 默认请求参数已经URL编码处理
// 本示例代码未加密secret参数明文传输,若要加密请参考:https://open…….cn/help/demo/sdk/demo-sign.php
$method = "GET";
$url = "https://api-gw…….cn/taobao/item_get/?key=<您自己的apiKey>&secret=<您自己的apiSecret>&num_iid=652874751412&is_promotion=1";
$curl = curl_init();
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($curl, CURLOPT_FAILONERROR, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_ENCODING, "gzip");
var_dump(curl_exec($curl));
?>

image.png

image.png

image.png