作为一名又拍云的技术支持工程师,小拍每天都会接管到很多客户的发问。这其中,有很多客户会问:“小拍,请问云存储上传除了应用控制台的文件治理和 FTP 工具之外,有没有其余的路径进行上传呢?”
“有哒,您能够调用 API 接口来进行上传哦。”
“请问,什么是 API 接口呢?我要怎么调用呢?”
别着急,这就为您介绍 API 接口。
什么是 API 接口
首先,咱们先来看一看 API 接口的定义:
API(Application Programming Interface, 应用程序编程接口)是一些事后定义的函数,目标是提供应用程序与开发人员基于某软件或硬件得以拜访一组例程的能力,而又无需拜访源码,或了解外部工作机制的细节。
从定义中, 咱们先划下重点:函数、提供应用程序与开发人员、无需拜访源码、例程 。其中,例程是某个零碎对外提供的性能接口或服务的汇合。
看完这个定义是不是感觉本人看了个寂寞,这解释跟不解释没有差异啊?好啦,不要放心,小拍来给大家直接了当的说一说。
API 其实能够了解为是接管要求的信差,通过 API 接口,咱们通知零碎(例程)想要做什么,零碎再把处理结果响应回来。
如果用一个现实生活中的场景来举例说明,那么餐厅的服务员其实就是一个典型的 API。设想一下你正坐在餐桌前,背后桌子上有一张点菜用的菜单,点好菜后,交由厨房进行解决。但当初少了一个要害的链接点,如何把咱们的单子送到厨房,再把食物送到我的桌上呢?
这就是服务员(API)退场的时候了。服务员就是这个信差,他会传递你的要求或者餐点,把这些信息通知厨房(零碎),厨房就会晓得怎么做,而后把餐品通过服务员端(响应)给你。
当初咱们把这个原理利用到真正的 API 例子上来。
快递单号查问,这大家应该很相熟吧。敌人通过顺丰寄了一箱零食给你,并告知你了快递单号,你就能够在顺丰的官网上,输出快递单号进行查问。顺丰的零碎接管到查问,就会在零碎中查找对应快递的信息,响应给你。
然而,很多时候咱们并不是间接通过快递公司的网站去查问快递信息的。比方说通过淘宝买的衣服,卖家通过顺丰发货,但咱们能够在淘宝上查问到顺丰快递的信息。那么淘宝是怎么获取到寄存在顺丰服务器上的快递数据呢?
没错,这里就是应用了 API。淘宝能够通过顺丰提供的 API 接口,来获取寄存在顺丰服务器上的快递信息,最初显示在咱们背后。
当初再看上边的定义,是不是感觉好了解一些了呢?API 接口就是事后定义好的函数逻辑,提供给其余零碎申请,而后返回后果的一个货色。
为什么要应用 API 接口
在晓得了 API 接口的作用后,应用 API 接口的起因也就高深莫测了。举个例子:你打算开发一个打车软件,须要在页面上展示地图,那你会怎么做呢?
如果说本人来开发地图,开发工夫就会大大缩短,老本也会减少许多。这个时候,其实能够在高德开放平台或者百度地图的开放平台,找到地图 API,购买他们的服务,部署调用相干的 API,这样就能够疾速在咱们软件中上线地图功能了。
所以,对于软件提供商来说,凋谢 API 并让别的应用程序来调用,造成生态,软件能力施展最大的价值,能力更有生命力,同时他人也看不见代码,不会挫伤商业秘密。
对于利用开发者来说,有了凋谢的 API,就能够间接调用多家公司做好的性能来做本人的利用,不须要所有的事件都本人操刀,节俭精力。
如何应用 API 接口
当初市面上凋谢的 API 接口,个别都是通过 HTTP 申请调用的。例如,一些第三方提供的查问天气的性能,咱们就能够依据第三方提供的 API 地址以及相干的阐明文档,携带上申请参数,在浏览器中间接拜访应用。
接下来,小拍以又拍云存储上传 API 为例,通过 curl 工具来实现一个向云存储上传文件的操作。接下来会波及到一些命令行工具以及代码的操作,如果你对 curl 这个工具不太熟悉的话,也能够参考小拍之前的文章《双剑合璧 - 把握 curl 和 Dig 走咫尺》哦。
每个 API 接口依据作用不同,须要传递的参数也是不尽相同的。因而,咱们在应用一个 API 接口之前,最好先看一下官网文档的 API 阐明。
通过文档介绍,咱们能够看到如果须要申请云存储的上传接口,咱们须要应用 PUT 的形式,向 http://v0.api.upyun.com 发动申请。其中存储服务名和文件的保留门路定义在申请地址中。并且须要携带 Authorization 鉴权申请头,来确保 API 的调用是非法的。
Authorization 的生成,小拍应用最简略的根本认证来进行演示。
依据鉴权文档介绍,curl 反对间接传入操作员名和明码来生成鉴权申请头。
理解 API 接口调用的规定之后,咱们就能够开始筹备数据,来向云存储空间上传文件啦。
例如,小拍的桌面上有一张图片,小拍想把图片上传到本人云存储空间下的 images 目录下,保留名为 lufei.jpg。
小拍的云存储空间名为 fileupload-upyun,操作员名为 hello,对应的明码为 dF4XhRbnpsvonU1dgdetURncHSwa2Z37,这样,咱们就有调用上传 API 的必要参数了。
接下来,咱们就依照要求,组装 curl 的申请命令。
curl -X PUT \
http://v0.api.upyun.com/fileupload-upyun/api/lufei.jpg \
-u hello:dF4XhRbnpsvonU1dgdetURncHSwa2Z37 \
-T C:\Users\hilih\Desktop\test.jpg
参数阐明:
-X 能够指定 curl 发动申请的办法
-u 对传入的数据进行 HTTP 根本认证,也就是用户和明码组和的 base64 编码
-T 能够使 curl 读取指定门路下的文件
这样呢,咱们就胜利的调用了云存储的上传 API 接口,通过接口上传了一张本地的图片到存储空间中。
不过,应用 curl 发动 HTTP 申请,看上去总有一些麻烦,命令行也太反人类了吧,有没有更加敌对的界面呢?过后啦,应用 curl 只是其中一种的上传办法,咱们还能够通过其它形式,来向云存储 API 发动 HTTP 申请。
例如二狗子的网站分享图片,二狗子就对上传的 API 做了解决,用网页的模式对他的用户提供了一个上传的 API 接口。小拍也分割了二狗子,请他提供了一个简略的测试用例。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title> 云存储上传 </title>
<script src="https://cdn.bootcdn.net/ajax/libs/axios/0.20.0/axios.min.js"></script>
</head>
<body>
上传服务空间:<input id='bucketname'>
操作员账号:<input id='username'>
操作员明码:<input id='password'>
存储门路:<input id='path'>
文件抉择:<input id='fileupload' type='file' name='file' /><br><br>
<button> 上传 </button>
<script type="text/javascript">
window.onload = function() {document.querySelector('button').onclick = ufload;
}
function ufload() {var bucket = document.querySelector('#bucketname').value;
var username = document.querySelector('#username').value;
var password = document.querySelector('#password').value;
var path = document.querySelector('#path').value;
var input = document.querySelector('#fileupload');
var file = input.files[0];
axios.defaults.baseURL = 'http://v0.api.upyun.com';
axios.put('/' + bucket + path, file, {
auth: {
username: username,
password: password
}
}).then(function(response) {console.log(response.data);
console.log(response.headers);
console.log(response.status);
if (response.status == 200) {alert('上传胜利');
}
})
}
</script>
</body>
</html>
也欢送你应用相熟的编程语言,来尝试调用 API 上传接口呀。
举荐浏览
“网页内容无法访问”可能是跨域谬误!
SSL 证书改革之时已至,这些变动你都分明吗?