【发布时间】:2015-08-16 17:10:48
【问题描述】:
我正试图围绕烧瓶中正确的 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的最佳方法是什么?
【问题讨论】: