白话科普,10s 了解 API

2024-02-20 01:44
文章标签 api 了解 科普 白话 10s

本文主要是介绍白话科普,10s 了解 API,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作为一名技术支持工程师,小编每天都会接收到很多客户的提问。这其中,有很多客户会问:“小拍,请问云存储上传除了使用控制台的文件管理和 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 上传接口呀。

这篇关于白话科普,10s 了解 API的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/726661

相关文章

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

速了解MySQL 数据库不同存储引擎

快速了解MySQL 数据库不同存储引擎 MySQL 提供了多种存储引擎,每种存储引擎都有其特定的特性和适用场景。了解这些存储引擎的特性,有助于在设计数据库时做出合理的选择。以下是 MySQL 中几种常用存储引擎的详细介绍。 1. InnoDB 特点: 事务支持:InnoDB 是一个支持 ACID(原子性、一致性、隔离性、持久性)事务的存储引擎。行级锁:使用行级锁来提高并发性,减少锁竞争

【LabVIEW学习篇 - 21】:DLL与API的调用

文章目录 DLL与API调用DLLAPIDLL的调用 DLL与API调用 LabVIEW虽然已经足够强大,但不同的语言在不同领域都有着自己的优势,为了强强联合,LabVIEW提供了强大的外部程序接口能力,包括DLL、CIN(C语言接口)、ActiveX、.NET、MATLAB等等。通过DLL可以使用户很方便地调用C、C++、C#、VB等编程语言写的程序以及windows自带的大

如何更优雅地对接第三方API

如何更优雅地对接第三方API 本文所有示例完整代码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/repositories/third 我们在日常开发过程中,有不少场景会对接第三方的API,例如第三方账号登录,第三方服务等等。第三方服务会提供API或者SDK,我依稀记得早些年Maven还没那么广泛使用,通常要对接第三方

Java基础回顾系列-第五天-高级编程之API类库

Java基础回顾系列-第五天-高级编程之API类库 Java基础类库StringBufferStringBuilderStringCharSequence接口AutoCloseable接口RuntimeSystemCleaner对象克隆 数字操作类Math数学计算类Random随机数生成类BigInteger/BigDecimal大数字操作类 日期操作类DateSimpleDateForma

Restful API 原理以及实现

先说说API 再说啥是RESRFUL API之前,咱先说说啥是API吧。API大家应该都知道吧,简称接口嘛。随着现在移动互联网的火爆,手机软件,也就是APP几乎快爆棚了。几乎任何一个网站或者应用都会出一款iOS或者Android APP,相比网页版的体验,APP确实各方面性能要好很多。 那么现在问题来了。比如QQ空间网站,如果我想获取一个用户发的说说列表。 QQ空间网站里面需要这个功能。

PHP: 深入了解一致性哈希

前言 随着memcache、redis以及其它一些内存K/V数据库的流行,一致性哈希也越来越被开发者所了解。因为这些内存K/V数据库大多不提供分布式支持(本文以redis为例),所以如果要提供多台redis server来提供服务的话,就需要解决如何将数据分散到redis server,并且在增减redis server时如何最大化的不令数据重新分布,这将是本文讨论的范畴。 取模算法 取模运

京东物流查询|开发者调用API接口实现

快递聚合查询的优势 1、高效整合多种快递信息。2、实时动态更新。3、自动化管理流程。 聚合国内外1500家快递公司的物流信息查询服务,使用API接口查询京东物流的便捷步骤,首先选择专业的数据平台的快递API接口:物流快递查询API接口-单号查询API - 探数数据 以下示例是参考的示例代码: import requestsurl = "http://api.tanshuapi.com/a

Weex入门教程之1,了解Weex

【资料合集】Weex Conf回顾集锦:讲义PDF+活动视频! PDF分享:链接:http://pan.baidu.com/s/1hr8RniG 密码:fa3j 官方教程:https://weex-project.io/cn/v-0.10/guide/index.html 用意 主要是介绍Weex,并未涉及开发方面,好让我们开始开发之前充分地了解Weex到底是个什么。 以下描述主要摘取于

WordPress开发中常用的工具或api文档

http://php.net/ http://httpd.apache.org/ https://wordpress.org/ https://cn.wordpress.org/ https://core.svn.wordpress.org/ zh-cn:开发者文档: https://codex.wordpress.org/zh-cn:%E5%BC%80%E5%8F%91%E8%80%