应用程序编程接口(API)已成为现代软件开发的重要组成部分。
他们允许开发人员创建可以以标准化方式与其他软件组件,服务或数据源进行交互的应用程序。
Python是一种流行的编程语言,用于构建API,其易用性,灵活性以及许多库和框架。
在本文中,我们将提供与Python构建API的综合指南。
API是一组用于构建软件应用程序的协议,例程和工具。 API允许不同的软件组件以标准化的方式相互交互,而不论基础技术或平台如何。
API可以访问其他应用程序,平台或设备提供的数据,服务或功能。
API有不同的类型和样式。最常见的API类型之一是Restful API。 REST代表代表性状态转移,这是一套用于构建Web应用程序的建筑原则。
RESTFUL API使用HTTP请求访问和操纵资源,可以以不同的格式表示,例如JSON或XML。
python的概述
Python是一种高级,解释的编程语言,以其简单性,可读性和多功能性而受欢迎。
Python用于许多应用程序,包括网络开发,数据分析,科学计算,人工智能等。
Python具有广泛的标准库,可为不同任务提供各种功能。还有许多可用于Python的第三方库和框架,可用于扩展其功能。
Python非常适合构建API,因为它的易用性,灵活性以及支持构建Web应用程序的大量库和框架。
选择Python API框架
Python有几个流行的Web框架,可用于构建API。其中包括烧瓶,django,金字塔,猎鹰等。
每个框架都有其优点和劣势,因此选择适合项目特定要求的框架很重要。
本文将重点放在烧瓶上,这是一个非常适合构建API的轻巧且灵活的网络框架。烧瓶为构建Web应用程序提供了一个简单而直观的接口,并且可以通过各种第三方扩展。
进行扩展。设置Python开发环境
在我们可以使用Python构建API之前,我们需要建立一个开发环境。我们建议使用虚拟环境来管理依赖关系并避免版本冲突。
可以在Python中创建虚拟环境的几种工具,例如Virtualenv,Conda或Pyenv。
我们设置了虚拟环境后,我们可以安装所需的软件包来构建API。对于烧瓶,我们需要使用PIP安装烧瓶包,即Python的软件包管理器。
我们还需要安装API特定功能所需的其他软件包,例如数据库驱动程序,身份验证库或第三方扩展。
用烧瓶
创建基本的API端点要创建带有烧瓶的主API端点,我们需要定义一个将请求处理到该路由的路由和Python函数。例如,我们可以定义一条返回的路由,返回一个Hello,World!
要使用烧瓶创建主API端点,我们首先需要通过在终端中运行以下命令来安装烧瓶:
pip安装烧瓶
然后,我们可以创建一个名为 app.py 的新的python文件,并添加以下代码:
来自烧瓶 import 烧瓶
app =烧瓶(__名称__)
@app.route( '/'/' )
def hello_world ():
返回 '你好,世界!'
在此代码中,我们从 flask 模块中导入烧瓶类,并使用 __名称__ 参数创建烧瓶类的新实例。这将创建一个新的烧瓶应用程序。
然后,我们使用@app.route()装饰器来定义root URL路径/â/strong>的路线。当对此URL路径提出get请求时,称为 hello_world()函数,返回字符串 hello,world!。。 p>
要运行应用程序,我们可以在 app.py.py 文件的末尾添加以下代码:
如果 __名称__ ==' __ main __ ':
app.run()
这启动了烧瓶开发服务器并运行应用程序。然后,我们可以通过在Web浏览器中访问http://localhost:5000/或使用诸如 curl 。
定义API方法
API通常支持多种HTTP方法,以与资源进行交互,例如GET,POST,PUT和DELETE。
要在烧瓶中定义API方法,我们可以将@app.route()用相应的http方法作为参数。
例如,我们可以定义使用POST请求创建新用户的路由:
@app.route( '/users',methods = ['post'post'] )) def create_user (): #创建新用户的逻辑 返回 '用户成功创建了'
在此代码中,我们使用方法 @app.route()装饰器的参数来指定 create_user()函数应仅为/users url路径的发布请求。
然后,我们可以添加用于创建新用户 create_user()功能的逻辑,并根据结果返回成功或错误消息。
定义API数据结构
API通常使用数据结构来表示资源,例如用户,产品或订单。在烧瓶中,我们可以使用Python词典或类来定义API的数据结构。
例如,我们可以为用户资源定义字典:
用户= {
'id':1,
'名称':'John Doe',
'电子邮件':'john.doe@example.com'
}
我们还可以使用 dataclasses 模块为用户资源定义类:
来自 dataclasses 导入 dataclass
@dataclass
class 用户:
id : int
名称: str
电子邮件: str
这将定义A 用户具有三个属性的类: id , name 和电子邮件。然后,我们可以为我们的API中的每个用户资源创建用户类的新实例。
连接到数据库
API通常需要从数据库中存储和检索数据,例如MySQL,PostgreSQL或MongoDB。在烧瓶中,我们可以使用各种数据库库和ORM(对象关联映射)框架与数据库进行交互。
例如,我们可以使用 blask_sqlalchemy 扩展程序连接到mySQL数据库:
来自 flask_sqlalchemy 导入 sqlalchemy
app =烧瓶(__名称__)
app.config ['sqlalchemy_database_uri'] = 'mysql:// user:password@localhost/db_name'
db = sqlalchemy(app)f
此代码为 sqlalchemy 对象设置数据库URI,该对象使我们能够使用Python与MySQL数据库进行交互。
然后,我们可以定义数据库模型,该模型是代表数据库表的Python类,并使用它们查询数据库并检索数据。例如,我们可以为mySQL 用户表定义用户表:
class 用户(db.model):
id = db.column(db。 integer ,primary_key = true )
name = db.column(db。字符串( 80 ),nullable = false )
电子邮件= db.column(db。字符串( 120 ),unique = true ,nullable = false )< /span>
这定义了用户类,该类从 db.model 类继承,由 sqlalchemy 提供。该类具有三个属性: id , name 和电子邮件,与用户表中的列相对应。
然后,我们可以使用用户模型查询数据库并检索数据,例如:
@app.route( '/user/' )
def get_user ( user_id ):
user = user.query.get(user_id)
如果用户:
返回 f'user {user.name} 带有电子邮件 {user.email} 找到'
else :
返回 '找不到用户'
此代码定义了通过获取get请求的用户到URL路径/user/
我们使用 user.query.get()方法从数据库中检索用户,并根据是否找到了用户返回成功消息或错误。 p>
固定API端点
通常需要确保API以防止未经授权的访问和保护敏感数据。
在烧瓶中,我们可以使用各种身份验证和授权机制来保护我们的API端点。
例如,我们可以使用JSON Web Tokens(JWT)来验证用户并授权访问受保护的资源。我们可以使用 flask_jwt_extdended 扩展程序在我们的烧瓶应用程序中实现JWT身份验证和授权:
来自 flask_jwt_extdended import jwtmanager,jwt_required,create_access_token,get_jwt_identity app =烧瓶(__名称__) app.config ['jwt_secret_key'] = 'super-secret' ##替换为生产中的安全秘密键 jwt = jwtmanager(app) @app.route( '/login',methods = ['post'] )) def 登录(): #检查用户名和密码 用户名= request.json.get('用户名', none ) 密码= request.json.get('密码',无) 如果用户名!= 'admin' 或 password!= '密码': 返回 jsonify({'消息':'无效的用户名或密码'}), 401 #生成JWT令牌 access_token = create_access_token(endentity =用户名) return jsonify({'access_token':access_token}), 200 @app.route( '/preected',methods = ['get'get'] )) @jwt_required() def preected (): current_user = get_jwt_identity() 返回 jsonify({'消息': f'hello, {current_user} !'}), 200
在此代码中,我们使用 @jwt_required()装饰器来保护/preected 端点,只能使用有效的JWT令牌访问。
我们还定义了/login 端点,该端点在发布请求中接受用户名和密码,如果凭据有效,请返回JWT令牌。
然后,我们可以使用 Postman 等工具来测试我们的API端点并验证它们是否正确固定。
结论
在本文中,我们学会了如何定义API端点,方法,数据结构和数据库连接以及如何使用身份验证和授权机制来保护我们的API端点。
使用Python创建API可以是构建Web应用程序的强大工具。