【Python程序开发系列】一文总结API的基本概念、功能分类、认证方式、使用方法和开发流程

这是Python程序开发系列原创文章,我的第195篇原创文章。

一、什么是API?

        API是软件开发中非常重要的概念,它简化了不同组件之间的交互和集成,提供了对其他软件或服务功能的访问和调用方式。

图片

        API是应用程序编程接口(Application Programming Interface)的缩写。它是一组定义了软件组件之间交互的规范和方法的集合。API允许不同的软件系统之间进行通信和交互,使它们能够相互访问和共享功能、数据和服务。

        API可以被看作是一个桥梁,它定义了如何与某个软件组件或服务进行交互。通过使用API,开发人员可以调用其他软件或服务提供的功能,而无需了解底层实现的细节,只需按照API的规范进行调用。

二、功能分类

2.1 实现数据访问

开发人员可以调用API从其他应用程序、数据库或服务中获取数据。比如调用Gitee平台提供的API获取组织下仓库信息。

2.2 实现特定功能的使用

开发人员可以通过调用API使用其他软件或服务提供的特定功能,例如发送电子邮件、处理图像、进行支付等。比如调用百度地图的提供的API进行地理编码、调用Gitee的API创建PR。

2.3 实现集成和扩展

开发人员可以通过调用API帮助不同的软件系统进行集成,使它们能够互相配合工作,共享数据和功能。

2.4 实现开发工具库的使用

通过调用PyPI的API安装numpy等第三方库,开发者可以充分利用库提供的功能和特性,加速开发过程,并减少重复的工作。

从PyPI(Python Package Index)安装库涉及访问远程服务器上的API服务。PyPI是Python的软件包仓库,它存储了各种Python库和工具的源代码和元数据。当您使用pip命令从PyPI安装库时,实际上是向PyPI的API发送请求,以获取库的信息和源代码,并将其下载到本地环境中。PyPI的API提供了一种标准化的方式,供开发者使用pip或其他工具从远程服务器下载库。这个API允许您搜索库、获取库的详细信息、获取库的版本列表,并下载库的源代码。

三、API的认证方式

        一般调用API都需要API认证,API认证是一种常见的安全机制,用于验证请求方的身份并授权其访问API的特定资源或功能。下面介绍几种常见的API认证方式:

3.1 API Key认证

是什么:它是一个唯一的字符串,用于标识和验证API的用户。当你向API发送请求时,你需要在请求头中包含你的API Key,以证明你有权访问该API。

为什么:API是一个“特权房间”,不是所有人都可以随便进入。只有拿到钥匙(API Key)的人,才有资格使用这个“房间”的服务。

用途:用于确认(不能验证)用户身份

使用方法:当你注册一个应用或网站时,它们通常会给你一串代码,这就是API Key。你需要在使用API时,把这串代码带上。

3.2 OAuth认证

是什么:OAuth(开放授权)是一个开放标准,用于通过第三方应用程序访问用户存储在另一服务提供商上的信息,而无需将用户名和密码提供给第三方应用。这意味着用户可以授权一个服务(如应用程序)访问他们在另一个服务上(如社交媒体)的信息。

为什么:因为有时候,我们需要让不同的“房间”(API或应用)之间能够互相通行。OAuth就是实现这一目的的最佳工具。

用途:社交登录:例如,使用Facebook或Google账号登录其他应用。数据共享:例如,让一个健康应用访问你的运动数据。

使用方法:当你在一个新网站点击“用Facebook登录”时,实际上就是在使用OAuth。

3.3 Token-Based 认证

是什么:“临时通行证”,只在短时间内有效。

为什么:更安全地保护你的账号信息。即使别人截获了你的一次请求,由于“令牌”很快就会过期,所以风险相对较小。

用途:常用于需要实时数据交换的应用,比如即时通讯、在线游戏等。

使用方法:通常,在你首次登录后,系统会生成一个“令牌”(Token)给你。每次请求数据时,你都需要带上这个“令牌”。

3.4 JWT(JSON Web Tokens)

是什么:是一种更先进的认证方式。它就像是一个“身份证”,里面包含了你的所有信息。

为什么:它不仅能证明你是你,还能存储额外的信息。这样,服务器就不需要再去数据库里查找你的信息,提高了效率。

用途:常用于需要实时数据交换的应用,比如即时通讯、在线游戏等。

使用方法:与Token-Based认证类似,你也需要在每次请求时带上这个“身份证”。

四、API的使用方法

        调用API时,通常是指通过网络请求访问远程服务器上的API服务。这些API服务可能提供不同的功能,如获取数据、执行特定任务、访问第三方服务等。调用API需要构建合适的请求,发送请求到API服务器,并处理服务器返回的响应。使用方法如下:

图片

1、获取API文档和访问凭证:首先,需要获取API的文档或说明,了解API的功能、端点(Endpoints)、参数、返回结果等信息。同时,如果API需要认证,需要获取相应的访问凭证,如API密钥、令牌等。

2、构建API请求:根据API文档中的说明,构建符合要求的API请求。这包括选择合适的HTTP方法(如GET、POST、PUT、DELETE等)、设置请求头、传递参数等。根据API的要求,可能需要在URL中包含路径参数或在请求体中传递数据。

3、发送API请求:使用合适的编程语言或工具发送API请求。可以使用HTTP库、API客户端库或开发框架提供的函数或方法来发送请求。确保请求的目标URL、请求方法、请求头和参数等信息正确设置。

4、处理API响应:一旦API请求发送成功,会收到API服务器返回的响应。根据API文档中的说明,处理API响应,获取所需的数据或处理返回的状态码、错误信息等。通常,API响应以JSON格式返回,可以使用JSON解析库将响应数据解析为可操作的对象或数据结构。

5、处理错误和异常:在使用API时,可能会遇到错误或异常情况。这包括网络连接问题、无效的请求参数、认证失败等。需要根据API的错误处理机制,对错误进行适当的处理和异常处理,以确保代码的稳定性和可靠性。

6、实现业务逻辑:根据API的功能和返回的数据,结合自己的业务逻辑进行处理。这可能包括数据处理、展示、存储等操作,以实现预期的功能和效果。

五、API的开发流程

API的开发流程一般如下:

1、明确需求:首先,明确你要开发的API的需求和目标。确定API的用途、功能和预期的用户群体,以及需要提供的数据或服务。

2、设计API:根据需求,设计API的结构和接口。考虑API的URL路径、请求方法(如GET、POST等)、参数和返回结果的格式(如JSON、XML等),以及错误处理机制等。

3、选择开发工具和框架:根据你的需求和技术栈,选择适合的开发工具和框架来实现API。常见的选择包括Flask、Django、Express.js等。

4、实现API:根据设计,使用选定的工具和框架来实现API。编写API的代码逻辑,包括请求处理、数据处理、身份验证和授权等。

5、测试API:编写测试用例,对API进行测试,确保API的功能和性能符合预期。可以使用自动化测试工具如Pytest、Postman等进行测试。

6、文档编写:编写API的文档,包括API的使用说明、参数说明、返回结果的格式和示例等。文档应该清晰、易懂,并提供足够的示例代码和使用场景。

7、发布和部署:将API部署到服务器或云平台上,使其可以被其他应用程序或开发者访问。确保API的安全性、可用性和性能。

8、监控和维护:定期监控API的运行状态和性能,及时处理错误和异常。根据用户反馈和需求,进行API的优化和更新。

开发的重点:API的URL路径、请求方法(如GET、POST等)、参数和返回结果的格式(如JSON、XML等),以及错误处理机制、API的代码逻辑(包括请求处理、数据处理、身份验证和授权)。

六、API和SDK

        API(应用程序编程接口)和SDK(软件开发工具包)是软件开发中常用的术语,它们有一些区别和关联:

  • API是一组定义了软件组件之间交互规则的接口。它提供了一种标准化的方式,让不同的软件组件之间可以进行通信和交互。API定义了如何构建请求、发送请求、处理响应等操作,以实现特定的功能或访问特定的服务。API通常是由服务提供商提供,供其他开发者使用。

  • SDK是一个软件开发工具包,它是为了简化和加速开发者使用某个特定服务或库的过程。SDK通常包含API的实现和一些辅助工具、示例代码等资源,以帮助开发者更方便地使用特定的服务。SDK可以提供一些高级抽象和封装,隐藏底层的细节,使开发者能够更快速地集成和使用特定的功能。

6.1 示例

        假设有一个名为 "CloudStorage" 的云存储服务,它允许开发者上传、下载和管理文件。这里我们将以API和SDK的角度来看待它们的区别。

  1. API:

    • CloudStorage提供了一组API,定义了与云存储服务进行交互的规则和操作。这些API可能包括上传文件、下载文件、列出文件、创建文件夹等功能。

    • 开发者可以使用HTTP请求(如GET、POST、PUT、DELETE)来调用这些API,并传递相应的参数和数据。例如,通过发送一个HTTP POST请求到https://api.cloudstorage.com/files/upload来上传文件。

    • API提供了一种标准化的接口,让开发者能够与云存储服务进行通信,并执行各种操作。

  2. SDK:

    • CloudStorage还提供了一个SDK,它是一个软件开发工具包,包含了使用CloudStorage服务的资源和实现。

    • SDK可能包括一个封装了API调用的库,以及一些辅助工具和示例代码。

    • 开发者可以通过引入CloudStorage SDK到他们的项目中,使用SDK中提供的高级抽象和封装来简化与云存储服务的交互。

    • 例如,SDK可能提供一个名为cloudstorage.upload(file_path)的函数,开发者只需调用该函数并传递文件路径,SDK会自动处理底层的API调用和文件上传过程。

        在上述示例中,API是CloudStorage服务的核心,而SDK是为了简化开发者使用CloudStorage服务的过程而提供的工具包。开发者可以选择直接使用API来与服务进行交互,或者使用SDK来获得更高级的抽象和便利性。

6.2 总结

  • API是一组定义了交互规则的接口,开发者可以通过发送HTTP请求来调用这些API,实现与服务的交互。

  • SDK是一个工具包,它包含了使用特定服务的资源和实现,提供了一些高级抽象和封装,使开发者能够更方便地使用服务。

作者简介:

读研期间发表6篇SCI数据挖掘相关论文,现在某研究院从事数据算法相关科研工作,结合自身科研实践经历不定期分享关于Python、机器学习、深度学习、人工智能系列基础知识与应用案例。致力于只做原创,以最简单的方式理解和学习,关注我一起交流成长。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch:Search tutorial - 使用 Python 进行搜索 (四)

在本节中,你将了解另一种机器学习搜索方法,该方法利用 Elastic Learned Sparse EncodeR 模型或 ELSER,这是一种由 Elastic 训练来执行语义搜索的自然语言处理模型。这是继之前的文章 “Elasticsearch:Search tutorial - 使用 Pyth…

Redis 主从、哨兵和分片集群简单介绍

Redis 主从集群架构 单节点 redis 并发能力有上限,要进一步提高 redis 并发能力,就要搭建主从集群,实现读写分离 主从同步原理 Replicaition id:每台 master 机器都一个 repl_id,是数据集的表示,若 salv…

深入理解 Flink(一)Flink 架构设计原理

大数据分布式计算引擎设计实现剖析 MapReduce MapReduce 执行引擎解析 MapReduce 的组件设计实现图 Spark 执行引擎解析 Spark 相比于 RM 的真正优势的地方在哪里:(Simple、Fast、Scalable、Unified) DAG 引擎中间计算结果可以进行内存持…

【动态规划】【矩阵】C++算法329矩阵中的最长递增路径

作者推荐 【动态规划】C算法312 戳气球 题目 给定一个 m x n 整数矩阵 matrix ,找出其中 最长递增路径 的长度。 对于每个单元格,你可以往上,下,左,右四个方向移动。 你 不能 在 对角线 方向上移动或移动到 边界外&…

[足式机器人]Part2 Dr. CAN学习笔记 - Ch02动态系统建模与分析

本文仅供学习使用 本文参考: B站:DR_CAN Dr. CAN学习笔记 - Ch02动态系统建模与分析 1. 课程介绍2. 电路系统建模、基尔霍夫定律3. 流体系统建模4. 拉普拉斯变换(Laplace)传递函数、微分方程4.1 Laplace Transform 拉式变换4.2 收…

使用SpirngBoot时部分编译报错解决方案:

1. 类文件具有错误的版本 61.0, 应为 52.0 请删除该文件或确保该文件位于正确的类路径子目录中。 报错截图: 解决方案: 找到springboot的java版本看是多少版本,springboot 3.0以上的版本需要最低JDK17的版本,所以查看你自己…

基于Spring-boot-websocket的聊天应用开发总结

目录 1.概述 1.1 Websocket 1.2 STOMP 1.3 源码 2.Springboot集成WS 2.1 添加依赖 2.2 ws配置 2.2.1 WebSocketMessageBrokerConfigurer 2.2.2 ChatController 2.2.3 ChatInRoomController 2.2.4 ChatToUserController 2.3 前端聊天配置 2.3.1 index.html和main.j…

电脑如何关闭自动更新?阻止系统自动更新方法

随着科技的发展,电脑已经成为我们生活中不可或缺的一部分。然而,有时候电脑的自动更新功能会给我们带来一些不必要的麻烦。因此,本文将介绍如何关闭电脑的自动更新功能,以便更好地管理电脑。 关闭自动更新功能的原因 电脑的自动…

Salesforce迁移到销售易方案详解

本章节着重介绍下国内的龙头CRM销售易及Salesforce迁移到销售易。 销售易成立与2011年,经过十几年的发展已经具有的国内领先的PaaS平台各行业成熟的案例。在网络安全法数据安全法个人信息保护法的三重加持下,从Salesforce迁移到性价比更高服务更好的国内…

故事机手机平板等智能硬件DVT阶段可靠性测试方法

DVT是什么 DVT是设计样品验证测试评审阶段,这个阶段要进行全面的,客观的测试, 主要测试项目包括:功能测试,安规测试,性能测试,合规测试(兼容性),机械测试&am…

idea引包异常 cannot resolve symbol ‘xxx‘

cannot resolve symbol ‘xxx’ 动了module的名字,引发的bug。直接清缓存重启

Docker简介、基本概念和安装

Docker简介、基本概念和安装 1.docker简介 1.1 什么是docker Docker 最初是 dotCloud 公司创始人 Solomon Hykes (opens new window)在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新,并于 2013 年 3 月以 Apache 2…

selenium爬取多个网站及通过GUI界面点击爬取

selenium爬取代码 webcrawl.py import re import time import json from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.options import Options from selenium.common.exceptions import TimeoutException, Stale…

Linux 文件(夹)权限查看

命令 : ls -al ls -al 是一个用于列出指定目录下所有文件和子目录的命令,包括隐藏文件和详细信息。其中,-a 选项表示显示所有文件,包括以 . 开头的隐藏文件,-l 选项表示以列表的形式显示文件的详细信息。 本例中:drwxrwxr-x 为权限细节。 权限细节(Permission detail…

电子学会C/C++编程等级考试2020年12月(一级)真题解析

C/C++编程(1~8级)全部真题・点这里 第1题:字符三角形 描述 给定一个字符,用它构造一个底边长5个字符,高3个字符的等腰字符三角形。 输入 输入只有一行, 包含一个字符。 输出 该字符构成的等腰三角形,底边长5个字符,高3个字符。 样例输入 * 1 样例输出 * *** ***** 答…

云平台API服务

问题 云平台API服务 详细问题 笔者今天需要使用病虫害图像识别API,游览器搜索后,结果如下: 点击第一个搜索结果:RMB50000,虽然提供1000000次病虫害识别,但是笔者没有这般大地需求,有没有可能…

阿里云RDMA通信库XRDMA论文详解

RDMA(remote direct memory access)即远端直接内存访问,是一种高性能网络通信技术,具有高带宽、低延迟、无CPU消耗等优点。RDMA相比TCP在性能方面有明显的优势,但在编程复杂度上RDMA verbs却比TCP socket复杂一个数量级。 开源社区和各大云厂…

【小工具】pixi-live2d-display,直接可用的live2d的交互网页/桌面应用

效果&#xff1a; <script src"https://cubism.live2d.com/sdk-web/cubismcore/live2dcubismcore.min.js"></script> <script src"https://cdn.jsdelivr.net/gh/dylanNew/live2d/webgl/Live2D/lib/live2d.min.js"></script> <…

Postman工具使用一篇快速入门教程

文章目录 下载安装注册登录CollectionFolderRequestGet请求Post请求Header设置Response响应 EnvironmentsGlobal环境变量其他环境变量Collection变量变量使用同名变量的优先级 Postman内置变量Pre-request script和Test script脚本设置、删除和获取变量获取请求参数获取响应数据…

数据结构入门到入土——链表(完)LinkedList

目录 一&#xff0c;双向链表 1.单向链表的缺点 2.什么是双向链表&#xff1f; 3.自主实现双向链表 接口实现&#xff1a; 二&#xff0c;LinkedList 1.LinkedList的使用 1.1 什么是LinkedList&#xff1f; 1.2 LinkedList的使用 1.LinkedList的构造 2.LinkedList的…