2.4 API 开发和集成

文章目录

  • API 开发和集成
    • API 的概念和作用
    • API 开发基础
    • API 集成
    • API 鉴权和安全
    • API 文档和测试
    • 微服务和 API 网关
    • 云服务和 API 集成
    • 未来趋势和发展
    • 实验
      • 实验一: 通过api post方式传入 json
      • 实验二:通过api将所需数据传入

API 开发和集成
API 的概念和作用介绍 API(应用程序编程接口)的定义和作用
解释为什么 API 在现代软件开发和系统集成中非常重要
API 开发基础

了解 API 的设计原则和最佳实践
介绍 RESTful API 的概念和特点
使用 Flask 或 Django 开发简单的 RESTful API,包括创建路由、定义资源和请求方法
API 集成

解释 API 集成的目的和好处,如系统之间的数据交换和功能扩展
使用 Python 的 requests 库进行 API 调用和数据传输
实现不同系统之间的数据交换,如与外部服务商的 API 集成
API 鉴权和安全

讨论 API 的鉴权机制,如基本认证、Token 鉴权等 >
强调保护 API 安全,防止恶意调用和数据泄露
使用 Python 实现安全的 API 调用和数据传输,保护敏感数据
API 文档和测试

编写清晰的 API 文档,包括接口说明、参数和返回值等
使用 Swagger 或其他 API 文档工具生成 API 文档
实现 API 的自动化测试,确保 API 功能和性能的稳定性
微服务和 API 网关

了解微服务架构,以及微服务之间的 API 调用和通信
引入 API 网关的概念,用于管理和调度微服务之间的 API 请求
实践使用 Python 编写的 API 网关,对微服务进行统一管理和访问控制
云服务和 API 集成

使用 Python 编写与云服务商的 API 集成脚本,如 AWS、Azure 或 Google Cloud 的 API 调用
实现自动化的云资源管理,包括创建实例、存储、网络等
利用 Python 脚本集成云服务,实现自动扩展、备份和监控等功能
未来趋势和发展

探讨 API 技术的未来发展,如 GraphQL、分布式 API 等
分析 API 在新兴技术领域的应用,如 AI、大数据和区块链
总结 API 开发和集成在现代软件开发中的不断演进和创新

API 开发和集成

API 的概念和作用

API,全称为应用程序编程接口,是一种使软件应用能够相互通信的接口。它定义了应用程序之间交互的方法,使得开发者可以使用已经定义好的功能,而不需要从零开始编写所有代码。

在现代软件开发和系统集成中,API 的作用不可忽视。它们使得不同的软件系统能够相互通信,共享数据和功能,从而提高开发效率,降低开发成本。例如,许多网站和应用程序会使用社交媒体平台的 API,让用户可以使用他们在社交媒体平台上的账户进行登录,这样就无需为每个网站或应用程序创建新的账户。

API 开发基础

API 的设计和开发需要遵循一些原则和最佳实践。首先,API 应该是简洁明了的,易于理解和使用。其次,API 应该是可扩展的,能够适应软件应用的变化和发展。

在 API 的设计中,RESTful API 是一种常见的设计风格。RESTful API 使用 HTTP 方法(如 GET、POST、PUT 和 DELETE)来操作资源,这些资源通常以 URL 的形式表示。例如,我们可以使用 GET 方法来获取资源,使用 POST 方法来创建新的资源。

在 Python 中,我们可以使用 Flask 或 Django 这样的框架来开发 RESTful API。以下是一个使用 Flask 开发的简单 API 的例子:

from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/api/tasks', methods=['GET'])
def get_tasks():
    tasks = [{'id': 1, 'name': 'Write blog post'}, {'id': 2, 'name': 'Test API'}]
    return jsonify({'tasks': tasks})

if __name__ == '__main__':
    app.run(debug=True)

在这个例子中,我们定义了一个 GET 方法的路由 /api/tasks,当用户访问这个 URL 时,会返回一个包含两个任务的 JSON 对象。

API 集成

API 集成是将两个或多个应用程序连接在一起,使它们可以共享数据和功能。这是通过使用每个应用程序的 API 来实现的。API 集成的主要好处是它可以提高效率,因为它允许不同的应用程序共享数据和功能,而不需要重复输入或复制数据。

Python 的 requests 库是一个常用的 HTTP 客户端库,可以用来发送 HTTP 请求。以下是一个使用 requests 库调用 API 的例子:

import requests

response = requests.get('http://example.com/api/tasks')
tasks = response.json()

在这个例子中,我们发送了一个 GET 请求到 http://example.com/api/tasks ,然后将返回的 JSON 数据解析为 Python 对象。

API 鉴权和安全

API 鉴权是确保只有经过授权的用户才能访问 API 的过程。常见的 API 鉴权机制包括基本认证(Basic Authentication)和令牌认证(Token Authentication)。

基本认证是一种简单的鉴权机制,它通过用户名和密码进行认证。然而,基本认证并不安全,因为它将用户名和密码以明文形式发送。

令牌认证是一种更安全的鉴权机制,它使用一个令牌(Token)来代替用户名和密码。令牌是在用户成功登录后由服务器生成的,它包含了用户的身份信息和一些元数据。

在 Python 中,我们可以使用 requests 库来进行 API 鉴权。以下是一个使用令牌认证的例子:

import requests

headers = {'Authorization': 'Token your-token'}
response = requests.get('http://example.com/api/tasks', headers=headers)
tasks = response.json()

在这个例子中,我们在请求头中添加了一个 Authorization 字段,其值为 Token your-token,其中 your-token 是你的令牌。

API 文档和测试

API 文档是描述 API 的详细信息的文档,包括 API 的功能、请求方法、请求参数、返回值等。一个好的 API 文档可以使开发者更容易地理解和使用 API。

Swagger 是一个常用的 API 文档工具,它可以自动生成 API 文档,并提供一个用户界面来浏览和测试 API。

API 测试是检查 API 是否按照预期工作的过程。API 测试可以检查 API 的功能、性能、安全性等。在 Python 中,我们可以使用 unittestpytest 这样的测试框架来进行 API 测试。

微服务和 API 网关

微服务架构是一种将应用程序分解为一组小型服务的方法,每个服务都运行在其自己的进程中,并通过 HTTP API 进行通信。微服务架构的主要优点是它可以提高系统的可扩展性和可维护性。

API 网关是一种处理 API 请求的服务器,它在微服务和外部客户端之间充当代理。API 网关的主要职责是路由请求、聚合数据和实施跨切面关注点,如身份验证和授权。

以下是一个使用 Python 和 Flask 编写的简单 API 网关的例子:

from flask import Flask, jsonify, request
import requests

app = Flask(__name__)

@app.route('/api/<service>/<resource>', methods=['GET', 'POST', 'PUT', 'DELETE'])
def proxy(service, resource):
    response = requests.request(
        method=request.method,
        url=f'http://{service}/{resource}',
        headers={key: value for (key, value) in request.headers if key != 'Host'},
        data=request.get_data(),
        cookies=request.cookies,
        allow_redirects=False)

    return (response.content, response.status_code, response.headers.items())

if __name__ == '__main__':
    app.run(debug=True)

在这个例子中,API 网关将所有的 API 请求转发到相应的服务。

云服务和 API 集成

云服务提供了一种方便的方式来部署和管理应用程序。许多云服务提供商,如 AWS、Azure 和 Google Cloud,都提供了他们自己的 API,开发者可以使用这些 API 来管理云资源,如创建和删除实例、存储和网络。

以下是一个使用 Python 和 AWS SDK(boto3)编写的简单脚本,该脚本创建一个新的 EC2 实例:

import boto3

ec2 = boto3.resource('ec2')

instance = ec2.create_instances(
    ImageId='ami-0abcdef1234567890',
    MinCount=1,
    MaxCount=1,
    InstanceType='t2.micro',
    KeyName='my-key-pair',
    SubnetId='subnet-0abcdef1234567890')[0]

print(f'Created instance {instance.id}')

在这个例子中,我们使用 boto3.resource 函数创建了一个 EC2 资源对象,然后调用 create_instances 方法创建了一个新的 EC2 实例。

未来趋势和发展

API 技术正在不断发展和创新。例如,GraphQL 是一种新的 API 技术,它允许客户端指定他们需要的数据,从而避免了过度获取和数据不足的问题。

此外,API 在新兴技术领域也有广泛的应用。例如,在人工智能领域,许多服务提供商提供了 API 来访问他们的机器学习模型。在大数据领域,API 可以用来查询和分析大量的数据。在区块链领域,API 可以用来发送交易和查询区块链的状态。

总的来说,API 开发和集成在现代软件开发中的作用越来越重要。通过学习和掌握 API 技术,开发者可以提高他们的开发效率,扩大他们的技术视野,为未来的软件开发做好准备。

实验

实验一: 通过api post方式传入 json

安装python3(根据系统选择)

yum -y install python3

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

编辑 server.py 文件 vi server.py

from flask import Flask, request, jsonify

app = Flask(__name__)

# Create an in-memory structure to hold posted data
data = {"name": "lihua"}

@app.route('/', methods=['GET', 'POST'])
def handle_data():
    global data
    if request.method == 'POST':
        # Overwrite the old data with the posted JSON
        data = request.get_json()
        return '', 204
    else:
        return jsonify(data), 200

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=9999)

运行程序

python3 server.py &

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

根据提示IP访问。我这里是192.168.77.135:9999

image-20231204155452998

或者postman

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

然后修改方式为post,更改name值:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

再改回get获取,或者浏览器访问。

image-20231204160141770

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

从以上小实验可以看出,我们去操控一个json接受数据并不是很难。代码也就十几行,这个如果稍微优化一下代码,就可以实现通过api修改数据库中用户的账号名称,而且这个作为后端代码,不需要理会其他的一个传入的语言是什么,json交流,至于同学心中可能有疑问,你就这么简单就更改了数据库了,或者这个json那么简单获取了,不安全布拉不拉…,告诉你们,不会,绝对的安全,这种api接口,我不是很清楚,api加密什么的,就简单从运维层面上,我就不可能让别的用户拿到api连接,不对外暴露,而且我json格式你不可能get到。你就算网络通了,你也拿不到api。再有就是,现在都是容器内部通信,多层加密的,所以放心学吧

实验二:通过api将所需数据传入

在刚刚的基础上,我们再写一个脚本vi client.py

from flask import Flask, render_template_string
import requests

app = Flask(__name__)

@app.route('/')
def display_name():
    response = requests.get("http://192.168.77.135:9999")
    name = response.json()['name']
    return render_template_string("<p>Name received: {{ name }}</p>", name=name)

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=9988)

运行

python3 client.py &

l外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

查看现象,根据提示IP访问。我这里是192.168.77.135:9988

image-20231204161709071

你可以认为这是一个后端界面。我们去不断的获取9999端口的数据。然后写入数据库,或者其他结构体存储起来,这样一个api调用就完成了。

这就是api请求的接收,通过9999暴露一个json,通过9988接受,这里只是方便演示,所以也开启了浏览器显示,否则是不必要的。

希望通过两个实验能够使你更加理解api调用,不至于那么惧怕它。很简单很实用的东西。

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

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

相关文章

树问题的总结(一)

1.树是什么&#xff1f; 树结构里的节点存在父子顺序结构&#xff0c;会有兄弟节点存在。这是数组结构不具备的。 最长用的二叉树&#xff1a;即每个父节点&#xff0c;有两个子节点&#xff1a;左孩子|右孩子 一般涉及到的概念&#xff1a; 深度 高度 2.树的种类…

C++继承(详解)

一、继承的概念 1.1、继承的概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段&#xff0c;它允许程序员在保持原有类特性的基础上进行扩展&#xff0c;增加功能&#xff0c;这样产生新的类&#xff0c;称派生类。继承呈现了面向对象程序设计的层次结…

MVCC是如何保证隔离性的

之前提到了MVCC可以一定程度上避免幻读&#xff0c;那具体MVCC是咋工作的呢&#xff1f; 需要介绍两个机制&#xff1a;read view和聚簇索引的两个隐藏列 read view 这个就是我们理解的快照&#xff0c;有四个字段&#xff0c;本事务id、活跃事务id列表&#xff08;包含自己&…

【一周AI简讯】亚马逊推出企业级生成式AI聊天机器人,英伟达黄仁勋称AI将在5年内赶超人类

亚马逊推出企业级生成式AI聊天机器人Amazon Q 周二&#xff0c;亚马逊的云计算部门亚马逊网络服务 (AWS)推出了 Amazon Q&#xff0c;这是一款生成式 AI 聊天机器人。与 ChatGPT 和 Bard 不同&#xff0c;Amazon Q 并不基于单一的 AI 模型。相反&#xff0c;它在一个名为 Bedr…

如何使用cpolar+Plex在Windows系统上搭建私人媒体影音站点公网可访问

文章目录 1.前言2. Plex网站搭建2.1 Plex下载和安装2.2 Plex网页测试2.3 cpolar的安装和注册 3. 本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1.前言 用手机或者平板电脑看视频&#xff0c;已经算是生活中稀松平常的场景了&#xff0c;特别是各…

Jupyter Notebook中设置Cell主题

1. 获取本机Jupyter的配置目录 C:\Users\Administrator>jupyter --data-dir C:\Users\Administrator\AppData\Roaming\jupyter2. 进入获取的目录&#xff0c;创建指定路径 C:\Users\Administrator>cd C:\Users\Administrator\AppData\Roaming\jupyter C:\Users\Adminis…

你的AI生成物侵权了吗?

你的AI生成物侵权了吗&#xff1f; 本文目录&#xff1a; 一、前置背景 1.1、什么是版权 1.2、什么是作品 1.3、什么是创作 1.4、什么是肖像权 1.5、什么是名誉 二、AI生成的作品是否具备版权&#xff1f;如果具备&#xff0c;版权应该属于谁&#xff1f; 三、AI 学习时…

Keil5创建基于标准库的工程

1&#xff0c;首先&#xff0c;打开Keil5软件&#xff0c;选择工程&#xff0c;新建项目&#xff08;下图第一个&#xff09; 选择一个专门的工程文件&#xff0c;然后在下面新建一个工程。 在后面要用到F103C8T6最小系统板。 这里弹出的是Keil软件新建工程的小组手&#xff0…

InnoDB的锁

自增锁 自增锁是一种特殊的表级别锁&#xff08;table-level lock&#xff09;&#xff0c;专门针对事务插入 AUTO_INCREMENT 类型的列。最简单的情况&#xff0c;如果一个事务正在往表中插入记录&#xff0c;所有其他事务的插入必须等待&#xff0c;以便第一个事务插入的行&a…

数据分析师的最佳拍档:三款数据可视化工具的优劣比较

作为一名数据分析师&#xff0c;数据可视化已经成为我工作中不可或缺的一部分。为了更好地完成工作&#xff0c;我尝试使用了多款数据可视化工具&#xff0c;其中三款比较突出&#xff0c;分别是Tableau、Power BI和山海鲸可视化。下面&#xff0c;我将从自己的使用体验出发&am…

手机传输数据到电脑该怎么操作?安卓、苹果都可以这样操作

安卓手机 你知道安卓手机传输数据到电脑的方法有哪些吗&#xff1f;下面我们就一起来看一看可以使用的一些方法。 采用 USB 数据线 这个方法应该是我们生活中较为常见的方法了&#xff0c;我们只需要使用手机的充电线&#xff0c;将其连接到电脑上&#xff0c;然后手机可能会…

新媒体营销仿真实训室解决方案

1. 背景&#xff1a; 随着新媒体的兴起&#xff0c;学校需要培养学生在新媒体领域的实际操作能力&#xff0c;提高他们的综合素质。因此&#xff0c;建设一套仿真实训系统&#xff0c;让学生能够在真实场景中学习和实践新媒体营销技能势在必行。 2. 实训平台概述&#xff1a;…

PyQt6 QComboBox下拉组合框控件

​锋哥原创的PyQt6视频教程&#xff1a; 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计34条视频&#xff0c;包括&#xff1a;2024版 PyQt6 Python桌面开发 视频教程(无废话…

Ribbon-IRule 修改负载均衡的规则

1、负载均衡规则描述 &#xff08;1&#xff09;整体关系 &#xff08;2&#xff09;规则描述 内置负载均衡规则类规则描述RoundRobinRule简单轮询服务列表来选择服务器。它是Ribbon默认的负载均衡规则。AvailabilityFilteringRule对以下两种服务器进行忽略: (1)在默认情况下&…

【MATLAB源码-第92期】基于simulink的QPSK调制解调仿真,采用相干解调对比原始信号和解调信号。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 QPSK&#xff0c;有时也称作四位元PSK、四相位PSK、4-PSK&#xff0c;在坐标图上看是圆上四个对称的点。通过四个相位&#xff0c;QPSK可以编码2位元符号。图中采用格雷码来达到最小位元错误率&#xff08;BER&#xff09; —…

java开发之个微机器人的实现

简要描述&#xff1a; 二次登录 请求URL&#xff1a; http://域名地址/secondLogin 请求方式&#xff1a; POST 请求头Headers&#xff1a; Content-Type&#xff1a;application/jsonAuthorization&#xff1a;login接口返回 参数&#xff1a; 参数名必选类型说明wcId…

【导航控制器总结-导航控制器栈 Objective-C语言】

一、导航控制器总结 1.我们接着上一堂课的内容继续 我们上节课说到哪里了,是不是就是对这个导航控制器的一个总结啊 然后,使用的注意事项 2.导航控制器使用注意事项: 1)第一点,使用导航控制器,你在创建的时候,需要给它指定一个根控制器 创建导航控制器的同时,指定…

多多情报通:助力拼多多商家选品运营的数据分析工具

多多情报通&#xff08;原名多多参谋&#xff09;是一款专为拼多多商家设计的数据分析工具&#xff0c;旨在帮助商家进行选品、运营优化和提高销售业绩。通过多多情报通&#xff0c;商家可以更好地了解市场趋势、消费者需求和竞争对手状况&#xff0c;从而制定有效的运营策略。…

电脑发生0x80070002错误,0x80070002错误代码怎么解决

电脑发生0x80070002错误代码是一个常见的问题&#xff0c;它通常与Windows更新或系统文件损坏有关。当你的电脑出现这个错误代码时&#xff0c;在使用电脑时可能会受到影响&#xff0c;因为这可能意味着系统无法正常更新或运行。几天的这篇文章将和大家聊聊0x80070002错误代码怎…