使用带有 flask_smorest and/or marshmallow 的自定义解析器

Using a custom parser with flask_smorest and/or marshmallow

我正在使用 flask-smorest, the Flask/Marshmallow-based REST API framework and would like to be able to parse requests made with the axios JavaScript 库,专门用于通过查询字符串传递的数组。

Axios 发送这样的数组:

/api/v1/items/?types[]=cd&types[]=dvd

我需要创建一个 custom parser for this (see also the helpful responses on the ticket I created) 以便我能够拼凑出一个基本的解析器来满足我的目的。

但对于我来说,我无法弄清楚如何告诉 flask_smorest 或 marshmallow 为我的 API 基于 MethodView 的端点使用这个自定义解析器.

我也在考虑在我的 Schema 中创建自定义字段,但我也不知道如何访问查询字符串以便正确解析它。

那么在 flask_smorest/marshmallow 中为特定类型的查询字符串数组编码集成解析器的最佳方法是什么?

假设您创建了一个如 webargs docs 中所示的解析器,您需要做的就是告诉您的 flask-smorest 应用程序使用此自定义解析器代替默认 FlaskParser.

这是通过从 ArgumentsMixin 覆盖 Blueprint 和覆盖 ARGUMENTS_PARSER 来完成的:

import flask_smorest

class Blueprint(flask_smorest.Blueprint):

    ARGUMENTS_PARSER = CustomParser()