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, jsonifyapp = 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 requestsresponse = 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 requestsheaders = {'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 requestsapp = 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 boto3ec2 = 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, jsonifyapp = Flask(__name__)# Create an in-memory structure to hold posted data
data = {"name": "lihua"}@app.route('/', methods=['GET', 'POST'])
def handle_data():global dataif request.method == 'POST':# Overwrite the old data with the posted JSONdata = request.get_json()return '', 204else:return jsonify(data), 200if __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 requestsapp = 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调用,不至于那么惧怕它。很简单很实用的东西。

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

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

相关文章

StarRocks上新,“One Data、All Analytics”还有多远?

K.K在《未来十二大趋势》中认为&#xff0c;我们正处于一个数据流动的时代。商业乃数据之商业。归根结底&#xff0c;你在处理的都是数据。 的确&#xff0c;当数据成为新的核心生产要素之际&#xff0c;数据分析就犹如最重要的生产工具之一&#xff0c;决定着企业在数字化时代…

Python爬虫超详细讲解(零基础入门,包教包会)

先看后赞&#xff0c;养成习惯。 点赞收藏&#xff0c;人生辉煌。 讲解我们的爬虫之前&#xff0c;先概述关于爬虫的简单概念&#xff08;毕竟是零基础教程&#xff09; 爬虫 网络爬虫&#xff08;又被称为网页蜘蛛&#xff0c;网络机器人&#xff09;就是模拟浏览器发送网络…

【Avue】select的远程搜索 [模糊搜索]

一、需求 【模糊搜索】 二、实现avue的远程搜索 1、search为搜索 2、remote远程搜索 3、dictValue{{key}}为输入的值

数实融合!低代码推动工业数字化转型走“深”向“实”

当下&#xff0c;“数字化、智能化”已经不再是新鲜词。毕竟&#xff0c;在早几年前就已经有企业喊出大举进军数字化的口号&#xff0c;轰轰烈烈的数字化转型运动也持续了很长一段时间&#xff0c;有一些业内人士甚至判断“如今的企业数字化已经走过了成熟期&#xff0c;来到了…

使用群晖Docker搭建HomeAssistant并实现异地公网访问家中智能设备

最近&#xff0c;我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念&#xff0c;而且内容风趣幽默。我觉得它对大家可能会有所帮助&#xff0c;所以我在此分享。点击这里跳转到网站。 使用群晖Docker搭建HomeAssistant并实现异地公网访问 文章目录 使…

Shopee买家通系统内置防指纹技术可解决多账号管理操作

为了解决多账号管理的难题&#xff0c;我们发现了一款强大的利器——Shopee买家通系统&#xff0c;它为我们提供了便捷而高效的辅助操作。这款系统基于先进的指纹浏览器技术开发&#xff0c;实现了全自动化的操作&#xff0c;让多账号管理变得轻而易举。 Shopee买家通系统内置了…

element-ui upload组件中将file文件数据转成二进制流数据格式

方法一 handleBeforeUpload (file)const reader new FileReader()reader.readAsArrayBuffer(file)reader.onload async function (theFile) {const binary new Blob([theFile.target.result]) // 转成二进制流数据 即binary数据格式}}方法二 const aBlob new Blob([file],…

有关ADW400环保监测模块的详细介绍-安科瑞 蒋静

1 概述 ADW400 环保监测模块主要用于计量低压网络的三相有功电能&#xff0c;同时可选择最大四个回路的电流输入&#xff0c;具有 RS485 通讯和 470MHz 无线通讯功能&#xff0c;方便用户进行用电监测、集抄和管理。可灵活安装于配电箱内&#xff0c;实现对不 同区域和不同负荷…

深入探讨网络抓取:如何使用 Scala 和 Dispatch 获取 LinkedIn 图片

网络抓取是一种从互联网上获取数据的技术&#xff0c;它可以用于各种目的&#xff0c;例如数据分析、信息检索、竞争情报等。网络抓取的过程通常包括以下几个步骤&#xff1a; 发送 HTTP 请求到目标网站解析响应的 HTML 文档提取所需的数据存储或处理数据 在本文中&#xff0…

【1】基于多设计模式下的同步异步日志系统-项目介绍

1. 项目介绍 本项⽬主要实现⼀个日志系统&#xff0c; 其主要支持以下功能: • 支持多级别日志消息 • 支持同步日志和异步日志 • 支持可靠写⼊日志到控制台、文件以及滚动文件中 • 支持多线程程序并发写日志 • 支持扩展不同的日志落地⽬标地 2. 开发环境 • CentOS 7 • vs…

Python 类:探索面向对象编程的奇妙世界

在 Python 中&#xff0c;类是一种强大的工具&#xff0c;可以让你更有组织地编写代码&#xff0c;实现真正的面向对象编程。 本篇文章将详细介绍 Python 类的知识点和使用方法&#xff0c;通过通俗易懂的解释和使用案例&#xff0c;帮助大家轻松理解并掌握类的奥秘。 1、类和…

封装带插槽的表格

子组件 <template><div><table><thead><tr><th v-for"col,colIndex in columns" :key"colIndex">{{ col.title }}</th></tr></thead><tbody v-if"instList.length >0"><tr …

Altair 电子可靠性解决方案

原文链接&#xff1a;Altair 电子可靠性解决方案

fpga rom 初始化文件的一些心得

目录 可能遇到的问题 问题 解决方案 rom的初始化 用途 文件类型 如何生成初始化文件 示例 Altera Xilinx 可能遇到的问题 问题 altera FPGA的rom找不到初始化文件&#xff0c;编译过程会提示类似的问题 Error(127001): Cant find Memory Initialization File or He…

运行游戏找不到x3daudio1_7.dll怎么解决?教你如何快速修复的教程

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“x3daudio1_7.dll丢失”。这个错误提示可能让我们感到困惑和烦恼&#xff0c;但是不用担心&#xff0c;本文将为您介绍x3daudio1_7.dll丢失的原因以及五种修复方法&#xff0c;帮助您解决这…

Nginx(缓存机制)

对于性能优化而言&#xff0c;缓存是一种能够大幅度提升性能的方案&#xff0c;因此几乎可以在各处都能看见缓存&#xff0c;如客户端缓存、代理缓存、服务器缓存等等&#xff0c;Nginx的缓存则属于代理缓存的一种。对于整个系统而言&#xff0c;加入缓存带来的优势额外明显&am…

Redis Desktop Manager for Mac:高效管理Redis数据的必备工具

Redis是一种快速、可扩展的内存数据库&#xff0c;被广泛应用于缓存、消息队列和实时分析等领域。而Redis Desktop Manager for Mac作为一款专为Mac用户设计的Redis桌面管理工具&#xff0c;为用户提供了高效便捷的方式来管理和操作Redis数据。 首先&#xff0c;Redis Desktop…

【已解决】xxljob连接报错HTTP 302(HTTP 401账号或密码错误)

目录 问题现象&#xff1a; 问题分析&#xff1a; 1、密码中的特殊字符。 2、密码长度问题。 解决方法&#xff1a; 拓展&#xff1a; 问题现象&#xff1a; 今天在生产环境使用xxljob任务调度来创建并执行任务时&#xff0c;出现了程序报错&#xff1a; 通过查询xxljob日志…

降本增笑?滴滴史上最严重服务故障,裁员真不能裁测试

2023 年 11 月 27 日晚间&#xff0c;滴滴因系统故障导致 App 服务异常&#xff0c;不显示定位且无法打车。11 月 27 日晚&#xff0c;滴滴出行进行了回复&#xff1a;非常抱歉&#xff0c;由于系统故障。 2023 年 11 月 28 日早间&#xff0c;滴滴出行消息称&#xff0c;网约…

Spring AOP 概念及其使用

目录 AOP概述 什么是AOP&#xff1f; 什么是Spring AOP ? Spring AOP 快速入门 1.引⼊ AOP 依赖 2.编写AOP程序 Spring AOP 核心概念 1.切点 2.连接点 3.通知 4.切面 通知类型 注意事项: PointCut&#xff08;定义切点&#xff09; 切面优先级 Order 切点表达…