【发布时间】:2015-01-04 11:59:31
【问题描述】:
我正在 Flask 中创建一个新的 RESTful API,它应该接受给定对象的 GET(用于请求资源)和 PATCH(用于执行各种增量、非幂等更新)。问题是一些被修补的数据必须经过身份验证,而有些则不应该。
举个例子来说明这一点,假设我正在构建一个应用程序,让每个人都可以查询一个资源被点击了多少次,以及它的页面被浏览了多少次。它还让人们在 javascript 中更新资源,说资源被再次点击(未经身份验证,因为它来自前端)。它还让经过身份验证的后端增加页面被查看的次数。
因此,按照 RESTful 原则,我认为所有三个操作都应该在同一条路径上完成——比如 /pages/some_page_name 应该接受 GET 和 PATCH,并且应该接受两种不同类型的 PATCH 数据。问题在于,在 Flask 中,看起来身份验证总是使用方法周围的装饰器完成,所以如果我有像 @app.route('/pages/<page_id>', methods=['GET', 'PATCH']) 这样的方法,我的身份验证将使用像 @auth.login_required 这样的装饰器来完成整个方法,这甚至会强制对不需要身份验证的方法进行身份验证。
所以,我的问题是三方面的:
- 我在同一路径下构建所有三个操作是否正确/这很重要吗?
- 如果我是对的,而且这很重要,我如何只要求对一种类型的 PATCH 进行身份验证?
- 如果这不重要,那么构建此 API 的更好或更简单的方法是什么?
【问题讨论】:
标签: python rest authentication flask flask-security