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

news2024/11/19 19:32:30

这是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、机器学习、深度学习、人工智能系列基础知识与应用案例。致力于只做原创,以最简单的方式理解和学习,关注我一起交流成长。

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

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

相关文章

SSL证书不受信任怎么办? SSL证书不受信任解决方案汇总

随着网络安全问题日益凸显,网站使用SSL证书以实现HTTPS加密及身份的可信认证,防止传输数据的泄露或篡改,已成为互联网人的共识。但SSL证书并不是部署了就能正常使用的,有时浏览器会提示“SSL证书不受信任”,这种时候该…

Java--业务场景:SpringBoot 通过Redis进行IP封禁实现接口防刷

文章目录 前言具体实现步骤1. 定义自定义注解2. 编写拦截器类IpUrlLimitInterceptor3. 在WebConfig类中添加IpUrlLimitInterceptor4. 添加注解到接口上 测试效果参考文章 前言 在实际项目中,有些攻击者会使用自动化工具来频繁刷新接口,造成系统的瞬时吞…

vue配置qiankun及打包上线

项目结构 基座:vue3 子应用A:vue3 子应用B: react 子应用C:vue3vite 项目目录: 配置基座 首先下载qiankun yarn add qiankun # 或者 npm i qiankun -S 所有子应用也要安装,vue-vite项目安装 cnpm ins…

XUbuntu22.04之快速复制绝对路径(二百零五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

Java项目:115SSM宿舍管理系统

博主主页:Java旅途 简介:分享计算机知识、学习路线、系统源码及教程 文末获取源码 一、项目介绍 宿舍管理系统基于SpringSpringMVCMybatis开发,系统主要功能如下: 学生管理班级管理宿舍管理卫生管理维修登记访客管理 二、技术框…

向量数据库:Milvus

特性 Milvus由Go(63.4%),Python(17.0%),C(16.6%),Shell(1.3%)等语言开发开发,支持python,go,java接口(C,Rust,c#等语言还在开发中),支持单机、集群部署,支持CPU、GPU运算。Milvus 中的所有搜索和查询操作都在内存中执行…

Phi-2小语言模型QLoRA微调教程

前言 就在不久前,微软正式发布了一个 27 亿参数的语言模型——Phi-2。这是一种文本到文本的人工智能程序,具有出色的推理和语言理解能力。同时,微软研究院也在官方 X 平台上声称:“Phi-2 的性能优于其他现有的小型语言模型&#…

C# WPF 数据绑定

需求 后台变量发生改变,前端对应的相关属性值也发生改变 实现 接口 INotifyPropertyChanged 用于通知客户端(通常绑定客户端)属性值已更改。 示例 示例一 官方示例代码如下 using System; using System.Collections.Generic; using Sy…

IoT 物联网 MQTT 协议 5.0 版本新特性

MQTT 是一种基于发布/订阅模式的轻量级消息传输协议,专门为设备资源有限和低带宽、高延迟的不稳定网络环境的物联网场景应用而设计,可以用极少的代码为联网设备提供实时可靠的消息服务。MQTT 协议广泛应用于智能硬件、智慧城市、智慧农业、智慧医疗、新零…

Linux:linux计算机和windows计算机 之间 共享资源

在前面章节已经介绍过,NFS用于Linux系统之间的文件共享,windows 并不知道 NFS ,而是使用 CIFS (Common Internet File System) 的协议机制 来 “共享” 文件。在1991年,Andrew Tridgell 通过逆向工程 实现了 CIFS 协议&#xff0c…

GAMES101-Assignment5

一、问题总览 在这次作业中,要实现两个部分:光线的生成和光线与三角的相交。本次代码框架的工作流程为: 从main 函数开始。我们定义场景的参数,添加物体(球体或三角形)到场景中,并设置其材质&…

【Cadence】sprobe的使用

实验目的:通过sprobe测试电路中某个节点的阻抗 这里通过sprobe测试输入阻抗,可以通过port来验证 设置如下: 说明:Z1代表sprobe往left看,Z2代表sprobe往right看 结果如下: 可以看到ZM1I0.Z2 顺便给出了I…

一篇文章了解做仿真软件的达索系统-达索代理商

达索系统是一家全球领先的仿真软件公司,致力于为客户提供创新和高效的解决方案。该公司的仿真软件被广泛应用于航空航天、汽车、能源、医疗等领域,为客户提供了强大的工程仿真能力。 达索系统的仿真软件具有多个特点,包括高精度、高效率、易用…

CSS 改变鼠标样式(大全)

使用方法&#xff1a; <span style"cursor:auto">Auto</span><span style"cursor:crosshair">Crosshair</span><span style"cursor:default">Default</span><span style"cursor:pointer">P…

高通平台开发系列讲解(USB篇)adb function代码分析

文章目录 一、FFS相关动态打印二、代码入口三、ffs_alloc_inst四、ep0、ep1&ep2的注册五、读写过程沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本文主要介绍高通平台USB adb function代码f_fs.c。 一、FFS相关动态打印 目录:msm-4.14/drivers/usb/gadget/fun…

系统存储架构升级分享

一、业务背景 系统业务功能&#xff1a;系统内部进行数据处理及整合, 对外部系统提供结果数据的初始化(写)及查询数据结果服务。 系统网络架构: • 部署架构对切量上线的影响 - 内部管理系统上线对其他系统的读业务无影响 •分布式缓存可进行单独扩容, 与存储及查询功能升级…

蓝牙信标定位原理

定位原理&#xff1a;蓝牙信标的定位原理是基于RSSI蓝牙信号强度来做定位的。 根据应用场景不同&#xff0c;通过RSSI定位原理可分为两种定位方式 一、存在性定位 这种方式通常要求所需定位的区域安装一个蓝牙信标即可&#xff0c;手持终端扫描蓝牙信标信号&#xff0c;扫描…

U盘删除的文件不在回收站如何恢复?教你3个简单方法!

“我在清理u盘的时候误删了一些重要的文件&#xff0c;想将这些文件恢复时才发现它们不在回收站中了。还有办法恢复吗&#xff1f;” 在数字化时代&#xff0c;u盘的作用渐渐显现。很多用户会将重要的数据直接保存在u盘中。但在使用u盘的过程中&#xff0c;不可避免会有数据的丢…

渐变登录页

效果演示 实现了一个简单的登录页面的样式和交互效果。 Code <div class"flex"><div class"login color">Login</div><label class"color">Username :</label><input type"text" class"input&…

第二证券:如何判断主力是在洗盘还是出货?

怎样判别主力是在洗盘仍是出货&#xff1f; 1、依据股票成交量判别 在洗盘时&#xff0c;个股的成交量与前几个生意相比较&#xff0c;呈现缩量的状况&#xff0c;而出货其成交量与前几个生意日相比较呈现放量的走势。 2、依据股票筹码分布判别 洗盘首要是将一些散户起浮筹…