gpt4 book ai didi

python - 使用蓝图在 Flask 中设计 API

转载 作者:太空宇宙 更新时间:2023-11-03 17:40:42 25 4
gpt4 key购买 nike

我正在尝试在 Flask 中进行正确的 API 设计。我最初的设计是构建一个 API 蓝图,它是一个薄层,用于将 URL 端点桥接到实际的 API 逻辑,如下所示。

@api.route('/posts/<int:id>')
def get_post(id):
return apiLogic.get_post(id)

我认为这将是设计 API 的最佳方式,因为如果我需要在客户端上从 jQuery 查询帖子,我可以使用 /posts/<int:id>端点。此外,如果我需要从后端渲染包含特定帖子的页面,我的后端代码可以直接调用 apiLogic.get_post(id),而无需对 /posts/<int:id> 执行 http 请求。 (本质上是向自身发送 HTTP 请求)。

但是,我相信既然API是一个蓝图,我不能直接调用apiLogic.get_post(id)在后端并保留 blueprint_before_request 授权检查,因为我本身没有通过蓝图调用此函数。

当我的后端想要获取帖子时,我可以通过不直接调用函数而是使用 http 请求来解决这个问题,但这是否是糟糕的设计?在 Flask 中构建可供客户端和服务器使用的 API 的最佳方法是什么?

最佳答案

我对我的网络应用程序做了类似的事情。我猜你所说的授权是指权限检查,而不是身份验证。我处理这个问题的方法是将授权层从 View 层移到业务逻辑层(apiLogic)。

我通常使用装饰器将授权层附加到业务逻辑。您仍然可以为您的授权层使用装饰器并装饰您的 View 函数,但您必须执行两次(针对 REST api 和 Web 前端中的每个相应方法一次)

关于python - 使用蓝图在 Flask 中设计 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30604047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com