如何才能正确地查找仅返回属于要求用户的对象的API?
api/version/items/<items_id>
或
api/version/user/<user_id>/items/<items_id>
在第一种情况下,服务器使用用户ID查询数据库,该用户ID是从其身份验证中获取的。
我不知道如何在Flask-restless中创建这两种情况。我认为预处理器会很有用,我可以从授权中获取user_id(JWT令牌),但我找不到将它用作数据库搜索参数的方法。
from flask_jwt import JWT, jwt_required, current_user
...
manager.create_api(Item,
methods=['GET'],
collection_name='items',
url_prefix='/api',
preprocessors=dict(GET_SINGLE=[api_auth],GET_MANY=[api_auth]))
@jwt_required()
def api_auth(*args, **kwargs):
user_id = current_user.id
# some code with user id addition.
pass
答案 0 :(得分:0)
预处理器将是您构建查询对象的位置。我认为项目的端点应该看起来像:
444
但是在预处理器中,您将构建一个将与请求一起传递的查询对象:
api/version/items
答案 1 :(得分:0)
您应该使用直接引用您尝试查询的资源的端点。例如:
Date
您应该分别定义$eval
和 [ComImport]
[Guid("00000114-0000-0000-C000-000000000046")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IOleWindow
{
void GetWindow(out IntPtr phwnd);
void ContextSensitiveHelp([In, MarshalAs(UnmanagedType.Bool)] bool fEnterMode);
}
预处理器。应该使用多个预处理器的单个(整数)和api/version/items
参数(字典)的get_single
来定义返回给用户的内容。
接受字典的预处理器和后处理器 参数可以(并且应该)就地修改它们的参数。那 表示对例如结果字典所做的更改 通过Flask-Restless视图功能看到并最终返回 客户。
因此,在预处理器中,您可以执行以下操作来检索数据库中的项目(在与用户的关系中定义):
get_many