什么是 API

API介绍

API(Application Programming Interface)应用程序编程接口,是一些预先定义的函数,目的为提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码或理解内部工作机制的细节。

API特点

① 明确定义的接口,可以为其他软件提供特定服务。

② API可以小到只包含一个单独的函数,也可以大到半酣数以百计的类、方法、全面函数、数据类型、枚举类型和常量等。

③ API的实现可以是私有的,也可以是开源的。

API分类

面向对象语言的API:Java API列表;

库与框架的API:Windows API、Windows Direct X;

API与协议:LDAP应用程序接口;

API与设备接口:PC BIOS调用接口、ASPI for SCSI设备接口;

Web API:Google地图API、新浪微博API、阿里云API市场;

为什么使用API

将一个大系统变为一个个小模块,让其互相之间来接耦,以便于快速迭代功能,减少重复开发功能部分。

 

API请求与认证

Web API基于HTTP协议(好处:客户端与服务器端无关)

HTTP请求机制:

  • 客户端向服务端发送请求;
  • 服务端给客户端一个响应,告诉客户端是否可以完成请求的工作。

HTTP请求包括内容:

URL(API调用地址)http://example.com
Method(请求方法)POST、GET、PUT、DETELE
Headers(请求头)User-Agent ......
Body(请求主体)Data

其中Method常见有四种,大多使用 GET 与 POST:

  • POST:请求服务器创建一个新的资源;
  • GET:请求服务器获取一个资源;
  • PUT:请求服务器编辑或更新一个已存在的资源;
  • DETELE:请求服务器删除一个资源;

Headers提供请求的元信息,一个简单的项目列表,有客户端发送的请求的时间按、主体大小、身份认证等信息。

Body包含了客户端希望发送给服务器的数据。

 

调用API后,除了返回数据外还包含一个状态码

  • 成功调用API后,返回2XX类型
HTTP 状态码语义
200   OK-[GET]服务器成功返回用户请求的数据
201   CREATED-[POST/PUT/PATCH]用户新建或修改数据成功
202   ACCEPTED-[*]表示一个请求已经进入后台排队(异步任务)
204   NO CONTENT-[DETELE]用户删除数据成功
  • API未调用成功,返回错误码,服务端错误码为5XX,表示服务不可用
错误代码描述HTTP 状态码语义
Internal ErrorAPI网关内部错误500建议重试
Failed To Invoke Backend Service底层服务错误500API提供者底层错误,建议重试;若多次重试仍不可行,联系API服务商解决
Service Unavailable服务不可用503建议稍后重试
Async Service后端服务超时504建议稍后重试
  • 客户端错误码为4XX表示业务报错,此时一般为参数错误,请求方式有误或被流程限制等业务类错误,详见下表或点击此处
错误代码描述HTTP 状态码语义
MissingParameterThe input parameter "<parameter name>" that is mandatory for processing this request is not supplied400缺少参数
InvalidParameterThe specified value of parameter "<parameter name>" is not valid.400参数取值无效
UnsupportedOperationThe specified action is not supported.400无效的接口
NoSuchVersionThe specified version does not exist.400无效的版本
ThrottlingRequest was denied due to request throttling.400操作被流量控制系统拒绝
InvalidAccessKeyId.NotFoundThe Access Key ID provided does not exist in our records.400无效的Access Key
ForbiddenUser not authorized to operate on the specified resource.403操作被禁止
Forbidden.RiskControlThis operation is forbidden by Aliyun Risk Control system.403操作被风险控制系统禁止
SignatureDoesNotMatchThe signature we calculated does not match the one you provided. Please refer to the API reference about authentication for details.403无效的签名
Forbidden.UserVerificationYour user account is not verified by Aliyun.403无实名验证

 

目前最新的API大多使用JSON数据格式。JSON为一种轻量级数据交换格式,易于人们阅读和编写,同时也易于机器解析和生成

JSON:
{
	"name":"中国",
	"province":[{
		"name":"黑龙江",
		"cities":{"city":["哈尔滨","大庆"]}
	},{
		"name":"广东",
		"cities":{"city":["广州","深圳","珠海"]}
	}]
}
XML:
<?xml version = "1.0" encoding="utf-8" ?>
<country>
	<name>中国</name>
	<province>
		<name>黑龙江</name>
		<citys>
			<city>哈尔滨</city>
			<city>大庆</city>
		</citys>
	</province>
</country>

JSON数据格式表示方法

  • 表示对象使用 { }   键值对{"T":"value","T":"value"}
  • 表示数组使用 [ ]   数组中元素用 , 隔开

API简单身份认证(APPCODE)

在请求Headers中添加Authorization字段,配置Authorization字段的值为“APPCODE + 半角空格 + APPCODE值”

  • 格式: Authorization:APPCODE Appcode值
  • 示例: Authorization:APPCODE 3F2504E04F8911D39

API签名认证(APPKey & Secret)

APPKey 和 Secret 相当于当前账户的另一套账号和密码

 

API调用

要调用API需要三个基础条件

  • API:您即将要调用的API ,明确API参数定义;
  • 应用app :作为您调用API时的身份,有AppKey和AppSecret用于验证您的身份;
  • API和App的权限关系: App想调用某个API需要具有该API的权限,这个权限通过授权的功能来建立;

API调用注意事项

  • 每个账号下APP个数上限为10个, APP名称应为账号下唯一;
  • 调用API的流控限制为,单个IP , QPS不超过100;
  • 你有权操作购买的API与APP的授权和解除授权。由服务提供方授权给你的APP的API,你无权操作解除授权;
  • 你的请求需要包含签名信息,请参照文档请求签名说明文档;
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐