在 Python 中使用 Falcon 构建 API

在 Web 开发领域,构建坚固且绿色的 API 至关重要。API(应用程序编程接口)充当软件程序结构之间的桥梁,允许轻松的口头交换和记录更改。Python凭借其灵活性和灵活性,成为不断增长的API的流行选择。在用于此目的的众多 Python 框架中,Falcon 作为一个性能卓越、高度简单的框架而自豪,它明确设计用于构建快速且响应灵敏的 API。创建 API,并提供一些说明性示例。

什么是 Falcon?

Falcon 是一个Python 的 Web 框架,专注于为构建 API 提供一个极其轻量级、超全面的性能平台。它不是像Django 或 Flask 这样的全栈框架,而是一种特殊的设备,旨在出色地完成一个组件:有效地处理 API 请求和响应 Falcon 的主要目标是速度,这使其成为构建 API 的最佳选择,其中性能和可扩展性至关重要。

Falcon 的布局理念围绕极简主义和简单性。它具有较小的代码库和简单的 API,使其易于分析和使用。该框架专为需要快速构建 API 并对功能进行一流粒度操作的开发人员而设计。

与 Falcon 相关的概念

在我们深入使用 Falcon 构建 API 之前,请先熟悉框架的一些重要标准和附加内容:

1.资源处理程序

  • 在 Falcon 中,一个有用的辅助处理程序是一个 Python 类,它定义特定端点 (URL) 需要如何回复传入的 HTTP 请求。
  • 这种训练通常是从 Falcon 继承的。资源并实施各种策略来处理特定的 HTTP 技术,如 GET、POST、PUT、DELETE 等。
  • 资源处理程序是 Falcon 设计的核心,使您能够以简单且有组织的方式塑造 API 的真实判断。

2.请求和响应对象

  • Falcon 提供封装传入 HTTP 请求和传出 HTTP 响应的请求和反应设备。
  • 这些工具提供了一种方便的方式来获取请求数据和收集响应的权限。
  • 您可以在有用的资源处理程序内部使用它们来与客户和服务器互动。

3.路由

  • Falcon 中的路由将传入的 HTTP 请求映射到精确的有用资源处理程序。
  • Falcon 提供了一种简单直观的方式来概述 falcon.App 优雅用法的路线。
  • 您可以通过将辅助处理程序附加到特定的 URL 模式来指定路由,从而轻松安排 API 的端点。

4.中间件

  • 中间件是 Falcon 中一个强大的想法,它允许您对请求和响应执行预处理和提交处理任务。
  • 您可以使用中间件来实现身份验证、日志记录或任何其他需要在多个 API 端点过程中完成的功能。

5.请求解析和验证

  • Falcon 提供了用于解析和验证传入请求信息的小工具,包括问题参数、请求标头和请求正文。
  • 这可以更轻松地确保您的 API 接收有效且格式正确的输入。

使用 Falcon 构建 API 所需的步骤

现在我们已经对 Falcon 的中心原则有了稳定的专业知识,让我们逐步了解使用 Falcon 构建 API 所需的步骤:

1. 安装

首先,您需要放入 Falcon。您可以使用 Python 包管理器 pip 来做到这一点

python 复制代码
pip install falcon

2. 创建 Falcon 应用程序

任何完全基于 Falcon 的 API 的基础都是 falcon.App 项。您创建一个这种优雅的示例来概述您的 API、设置路由和配置中间件。

Python3

python 复制代码
import falcon

app = falcon.App(middleware=[
	# Add your middleware here
])

3. 定义资源处理程序

接下来,将辅助处理程序定义为 Python 指令。这些指令继承自 falcon.Resource 并强制执行与它们应处理的 HTTP 方法类似的方法(例如,on_get、on_post、on_put、on_delete)。

Python3

python 复制代码
class HelloWorldResource:
	def on_get(self, req, resp):
		resp.status = falcon.HTTP_200
		resp.text = 'Hello, World!'

4. 将 URL 映射到资源处理程序

您可以通过将 URL 添加到 Falcon 应用程序的路由器来将 URL 映射到有用的资源处理程序中。这是通过使用 falcon.App 实例的 add_route 技术来完成的。

Python3

python 复制代码
app.add_route('/hello', HelloWorldResource())

5. 运行 Falcon 应用程序

最后,您可以使用您想要的 Web 服务器运行 Falcon 软件。Falcon 符合 WSGI 标准,这意味着您可以使用各种 WSGI 服务器(例如 Gunicorn 或 uWSGI)来为您的 API 提供服务。

Python3

python 复制代码
if __name__ == '__main__':
	from wsgiref import simple_server

	httpd = simple_server.make_server('localhost', 8000, app)
	httpd.serve_forever()

就是这样!您已经创建了一个基本的 Falcon API。您现在可以向定义的端点发出 HTTP 请求并从资源处理程序获取响应。

构建待办事项列表 API

在这种情况下,我们创建了一个 TodoResource 来处理 GET 和 POST 请求,以操作待办事项小工具列表。该 API 允许您使用 GET 请求检索待办事项列表,并使用 POST 请求添加新的待办事项项目。

Python3

python 复制代码
import falcon
import json

class TodoResource:
	def __init__(self):
		self.todos = []
	def on_get(self, req, resp):
		resp.status = falcon.HTTP_200
		resp.body = json.dumps({'todos': self.todos})
	def on_post(self, req, resp):
		data = req.media
		todo = data.get('todo')
		if todo is not None:
			self.todos.append(todo)
			resp.status = falcon.HTTP_201
			resp.body = json.dumps({'message': 'Todo added successfully'})
		else:
			resp.status = falcon.HTTP_BAD_REQUEST
			resp.body = json.dumps({'error': 'Invalid request'})

app = falcon.App()
app.add_route('/todos', TodoResource())

if __name__ == '__main__':
	from wsgiref import simple_server

	httpd = simple_server.make_server('localhost', 8000, app)
	httpd.serve_forever()

输出

构建带有身份验证的待办事项列表 API

在 API 中添加身份验证并不是一个不寻常的需求。Falcon 中间件功能使身份验证易于应用。下面是Falcon内置的falcon.Auth中间件的使用实例。对于此示例,您可能需要安装 falcon_auth 包。使用以下命令使用 pip 安装 falcon_auth 包。

python 复制代码
pip install falcon_auth

在此示例中,我们使用 Falcon falcon-auth 中间件对独特技术进行初步身份验证。ProtectedResource 需要身份验证,而 PublicResource 现在不需要。您可以自定义身份验证判断来满足您的应用程序的需求。

Python3

python 复制代码
import falcon
from falcon_auth import FalconAuthMiddleware, BasicAuthBackend
auth_backend = BasicAuthBackend(lambda username, password: username == 'user' and password == 'password')
app = falcon.App(middleware=[
	FalconAuthMiddleware(auth_backend, exempt_routes=['/public']),
])
class ProtectedResource:
	def on_get(self, req, resp):
		resp.status = falcon.HTTP_200
		resp.text = 'Authenticated resource'
class PublicResource:
	def on_get(self, req, resp):
		resp.status = falcon.HTTP_200
		resp.text = 'Public resource'

app.add_route('/protected', ProtectedResource())
app.add_route('/public', PublicResource())

if __name__ == '__main__':
	from wsgiref import simple_server
	httpd = simple_server.make_server('localhost', 8000, app)
	httpd.serve_forever()

总结

Falcon 是一个在 Python 中构建高整体性能 API 的有效子程序。其紧凑的设计和对速度的关注使其成为需要快速和绿色 API 端点的程序的绝佳选择。通过了解Falcon的基本概念,按照步骤用Falcon创建API,并探索现实的例子,您可以使用这个框架创建一个强大且绿色的API,满足您的愿望,特别是关于是否构建一个简单的To-Do列出 API 或实施复杂的身份验证机制,Falcon 提供您在互联网 API 项目中所需的功能和功能。

相关推荐
hlsd#23 分钟前
go mod 依赖管理
开发语言·后端·golang
陈大爷(有低保)27 分钟前
三层架构和MVC以及它们的融合
后端·mvc
亦世凡华、28 分钟前
【启程Golang之旅】从零开始构建可扩展的微服务架构
开发语言·经验分享·后端·golang
河西石头29 分钟前
一步一步从asp.net core mvc中访问asp.net core WebApi
后端·asp.net·mvc·.net core访问api·httpclient的使用
2401_8574396940 分钟前
SpringBoot框架在资产管理中的应用
java·spring boot·后端
怀旧66642 分钟前
spring boot 项目配置https服务
java·spring boot·后端·学习·个人开发·1024程序员节
阿华的代码王国1 小时前
【SpringMVC】——Cookie和Session机制
java·后端·spring·cookie·session·会话
小码编匠1 小时前
领域驱动设计(DDD)要点及C#示例
后端·c#·领域驱动设计
德育处主任Pro2 小时前
『Django』APIView基于类的用法
后端·python·django
哎呦没4 小时前
SpringBoot框架下的资产管理自动化
java·spring boot·后端