API的应用

news2024/11/23 11:43:57

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

应用程序接口

想象一下像餐馆菜单中的API。菜单提供您可以订购的菜肴列表,以及每道菜的描述。当您指定所需的菜单项时,餐厅的厨房可以完成工作并为您提供一些成品菜肴。你不确切知道餐厅如何准备食物,你真的不需要。

类似地,API列出了开发人员可以使用的一系列操作,以及他们所做的事情的描述。开发人员不一定需要知道如何构建操作系统并显示“另存为”对话框。他们只需要知道它可以在他们的应用程序中使用。

这不是一个完美的比喻,因为开发人员可能必须提供他们自己的数据到API来获得结果,所以也许它更像是一个高档餐厅,你可以提供厨房将使用的一些自己的成分。

但它的准确性非常准确。API允许开发人员通过利用平台的实现来完成细节工作,从而节省时间。这有助于减少开发人员需要创建的代码量,还有助于在同一平台的应用程序之间创建更高的一致性。API可以控制对硬件和软件资源的访问。

API使开发人员的生活更轻松

假设您想为iPhone开发应用程序。Apple的iOS操作系统提供了大量的API - 正如其他操作系统所做的那样 - 让您更轻松。

例如,如果要嵌入Web浏览器以显示一个或多个网页,则无需为您的应用程序从头开始编写自己的Web浏览器。您可以使用WKWebView API在应用程序中嵌入WebKit(Safari)浏览器对象。

如果您想从iPhone的相机中捕捉照片或视频,则无需编写自己的相机界面。您可以使用相机API在您的应用中嵌入iPhone的内置相机。如果不存在API以使这一点变得简单,那么应用程序开发人员必须创建自己的相机软件并解释相机硬件的输入。但Apple的操作系统开发人员已经完成了所有这些艰苦的工作,因此开发人员可以使用相机API嵌入相机,然后继续构建他们的应用程序。而且,当Apple改进相机API时,所有依赖它的应用程序都会自动利用这一改进。

这适用于每个平台。例如,您想在Windows上创建一个对话框吗?有一个API。想在Android上支持指纹认证吗?还有一个API,所以你不必测试每个不同的Android制造商的指纹传感器。开发人员不必一遍又一遍地重新发明轮子。

API控制对资源的访问

API还用于控制对应用程序未必具有使用权限的硬件设备和软件功能的访问。这就是API经常在安全性方面发挥重要作用的原因。

例如,如果您访问过某个网站并在浏览器中看到该网站要求查看您的确切位置的消息,则该网站会尝试在您的网络浏览器中使用地理定位API。Web浏览器公开这样的API,使Web开发人员可以轻松访问您的位置 - 他们可以询问“您在哪里?”,浏览器可以轻松访问GPS或附近的Wi-Fi网络以查找您的物理位置。

但是,浏览器还会通过API公开此信息,因为它可以控制对它的访问。当网站想要访问您的确切物理位置时,他们可以通过位置API获取它的唯一方法。并且,当网站尝试使用它时,您 - 用户 - 可以选择允许或拒绝此请求。访问GPS传感器等硬件资源的唯一方法是通过API,因此浏览器可以控制对硬件的访问并限制应用程序可以执行的操作。

同样的原则也用于现代移动操作系统,如iOS和Android,其中移动应用程序具有可以通过控制对API的访问来实施的权限。例如,如果开发人员尝试通过相机API访问相机,则可以拒绝权限请求,并且应用无法访问设备的相机。

使用权限的文件系统(如在Windows,Mac和Linux上一样)具有文件系统API强制执行的权限。典型应用程序无法直接访问原始物理硬盘。相反,应用程序必须通过API访问文件。

API用于服务之间的通信

API也用于各种其他原因。例如,如果您曾在网站上看过嵌入的Google地图对象,则该网站会使用Google Maps API嵌入该地图。Google向这些Web开发人员公开了这样的API,然后他们可以使用API在他们的网站上填充复杂的对象。如果这样的API不存在,开发人员可能必须创建自己的地图并提供他们自己的地图数据,只是为了在网站上放置一个小的交互式地图。

而且,由于它是一个API,谷歌可以控制在第三方网站上访问谷歌地图,确保他们以一致的方式使用它,而不是试图嵌入一个显示谷歌地图网站的框架。

这适用于许多不同的在线服务。有一些API可用于从Google翻译中请求文本翻译,或在网站上嵌入来自Twitter的Facebook评论或推文。

该OAuth的标准还定义了一些API,允许您登录到网站与其他服务,例如,使用您的Facebook,谷歌,或Twitter帐户登录到一个新的网站,而不只是该网站创建一个新的用户帐户。API是标准合同,用于定义开发人员如何与服务进行通信,以及开发人员应该收到的输出类型。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/346870.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安卓|aar和jar打包引入流程演示

安卓|aar和jar打包引入流程演示aar和jar存在相关意义打包环境工具aar和jar|Module项目目录aar打包|引入总览步骤|aar配置打包创建java or kotlin类文件及资源|截图展示步骤|aar包引入jar打包|引入总览步骤|jar配置打包任务创建java类文件|截图展示步骤|jar包引入aar和jar运行在…

OpenTracing协议规范链接

一、官网链接 OpenTracing specificationhttps://opentracing.io/specification/不过目前OpenTracing项目已归档,不再维护。需要参考OpenTelemetry官网链接 Migrating from OpenTracing | OpenTelemetryBackward compatibility with OpenTracing has been a prior…

Promise 的理解

promise 是什么?promise 是JS 中进行异步编程的最新的解决方案从语法上来说:Promise 是一个构造函数从功能上来说:promise 对象时用来封装一个异步操作并可以获取其结果其三种状态,reasolve 、pendding、 rejectedPromise 的基本运…

计算机网络-ip数据报

在图中,网络层包含了四种协议:ARP、IP、ICMP、IGMP,由上下关系表明,ARP为IP协议服务,IP为ICMP和IGMP服务。 IP数据报格式 此处不区分数据报和分组的概念:当数据部分过长时,将数据部分拆分&…

2022年全国职业院校技能大赛A(1)

目录 模块A 基础设施设置与安全加固 一、项目和任务描述: 二、服务器环境说明 三、具体任务(每个任务得分以电子答题卡为准) A-1任务一 登录安全加固 1.密码策略(Windows,Linux) a.设置最短密码长度为…

Python 之 NumPy 随机函数和常用函数

文章目录一、随机函数1. numpy.random.rand(d0,d1,…,dn)2. numpy.random.randn(d0,d1,…,dn)3. numpy.random.normal()4. numpy.random.randint()5. numpy.random.sample6. 随机种子np.random.seed()7. 正态分布 numpy.random.normal二、数组的其他函数1. numpy.resize()2. nu…

芯片是怎样“炼”成的?

在芯片设计完成,交由芯片制造厂(Fab)进行试产(Tape out)之后,就可以进行量产了。但Tape out是个漫长的过程,在此过程中,Fab里的工艺及设备工程师们需要不断调试,使得芯片…

Python优化算法—遗传算法

Python优化算法—遗传算法一、前言二、安装三、遗传算法3.1 自定义函数3.2 遗传算法进行整数规划3.3 遗传算法用于旅行商问题3.4 使用遗传算法进行曲线拟合一、前言 优化算法,尤其是启发式的仿生智能算法在最近很火,它适用于解决管理学,运筹…

全球认可的PMI认证体系

全球认可的PMI认证体系我们生活在一个“项目化”的世界里,而且这一趋势在不断加强。PMI的专业认证将使您做好准备,满足全球范围内各种项目、不同企业的需求。PMI的认证源于项目管理从业者,并服务于项目管理从业者。所有认证基于严格的标准和持…

HTML5之CSS基础学习笔记

基础认知 CSS初始 CSS的介绍 CSS:层叠样式表(Cascading style sheets) CSS作用是什么?? 给页面中的HTML标签设置样式 CSS就是用来做美化的,我之前写的网页就是黑白,要不带点彩色的图片&#x…

MYSQL-主从复制

文章目录1 概述2 原理3 搭建3.1 主库配置3.2 从库配置1 概述 主从复制是指将主数据库的DDL和 DML操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。 MySQL支持一台主库同时向多台从库进…

从事架构师岗位快2年了,聊一聊我对架构的一些感受和看法

从事架构师岗位快2年了,聊一聊我和ChatGPT对架构的一些感受和看法 职位不分高低,但求每天都能有新的进步,永远向着更高的目标前进。 文章目录踏上新的征程架构是什么?架构师到底是干什么的?你的终极目标又是什么&#…

腾讯实践:面向在线游戏的智能推荐系统设计实践

‍省时查报告-专业、及时、全面的行研报告库省时查方案-专业、及时、全面的营销策划方案库【免费下载】2023年1月份热门报告合集ChatGPT的发展历程、原理、技术架构及未来方向《ChatGPT:真格基金分享.pdf》2023年AIGC发展趋势报告:人工智能的下一时代推荐…

【经验】CiteSpace|Wiley Online Library或除知网以外的其他网站的文献怎么导入CiteSpace 6.1.6?

如果没安装,请看这篇博客安装,现在新版(6.1.6)的不需要额外下载java了,就很妙~:   最新版citespace软件的安装与配置 结论:导出成RIS然后用它自带的转换成WoS。 Wiley Online Library导出RIS…

(考研湖科大教书匠计算机网络)第四章网络层-第三节2:分类编址的IPv4地址

获取pdf:密码7281专栏目录首页:【专栏必读】考研湖科大教书匠计算机网络笔记导航 文章目录一:分类IP地址概述二:各类地址详解(1)A类地址(2)B类地址(3)C类地址…

算法刷题打卡第91天:统计一个圆中点的数目

统计一个圆中点的数目 难度:中等 给你一个数组 points ,其中 points[i] [xi, yi] ,表示第 i 个点在二维平面上的坐标。多个点可能会有 相同 的坐标。 同时给你一个数组 queries ,其中 queries[j] [xj, yj, rj] ,表…

C++100-C++拓展002-float精度问题

文章目录C100-C拓展002-float精度问题摘要Cfloat精度问题C浮点float基本格式C查看数据范围在线练习:总结C100-C拓展002-float精度问题 摘要 本系列为C学习系列,会介绍C基础语法,基础算法与数据结构的相关内容。本文为C拓展内容,包…

linux安装

我们在部暑的时候 总要用到linux 所以我们可以提前把linux安装好 准备一个安装好的linux 到时直接克隆出来用就可以一 安装linux1). 选择创建新的虚拟机2). 选择"典型"配置3). 选择"稍后安装操作系统(S)"4). 选择"Linux"操作系统,"CentOS7 …

IAR警告抑制及还原

工作中需要临时抑制 警告 Pa084,源代码如下: sy_errno_t sy_memset_s(void *dest, sy_rsize_t dmax, int value, sy_rsize_t n) { sy_errno_t err; if (dest NULL) { return SY_ESNULLP; } if (dmax > SY_RSIZE…

「C语言进阶」数据内存的存储

🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀 目录 🐰数据类型的介绍 🐰类型的意义 🐰数据类型的基本归类…