问题标签 [webargs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 无法使用 flask-restful 设置蓝图
我已阅读此文档以使用蓝图设置 flask-restful。但由于某种原因,我的 curl 请求通过routes.py
. 这是我的文件结构:
该backend/app/project/__init__.py
文件是我注册所有蓝图的地方,我有一个方法可以创建一个烧瓶应用程序,然后我调用backend/tools.py
. 这是我如何注册蓝图和方法的片段:
backend/app/project/__init__.py
这是热图的片段routes.py
:
backend/app/project/heatmap/routes.py
这是目录的__init__.py
文件heatmap
:
backend/app/project/heatmap/__init__.py
所以当我POST
在这个设置中提出请求时,他们会通过routes.py
文件。如果我注释掉这部分:
backend/app/project/heatmap/__init__.py
然后似乎没有注册中的 post 端点,因为我收到一个错误,即没有这样的端点: TypeError: The view function did not return a valid response. The function either returned None or ended without a return statement.
。所以我的设置一定是有缺陷的。你能指出我这里有什么不正确的地方吗?
python-3.x - 验证非静态参数 (webargs/marshmallow)
我正在为我的一个已经有首页的应用程序创建一个 API。输入参数看起来像这样:
情况1
{'_field_1_': 'current_coupon', '_1_>=_1': 'True', '_1_value_1': '10', '_1_value_2': '', '_1_compare_field': '', 'output-columns': 'cusip,isin,description'}
案例2
{'_field_1_': 'cusip', '_1_exactly': 'True', '_1_value': 'ads', '_1_compare_field': '', '_field_2_': 'semi_mod_duration', '_2_>=_1': 'True', '_2_value_1': '', '_2_value_2': '', '_2_compare_field': 'eff_dur', 'output-columns': 'cusip,isin,description,ticker,current_coupon'}
我在webargs
文档中找到了如何进行简单的 arg 验证,我的另一个应用程序的代码如下所示:
但是,在这个应用程序中,字段的数量是可变的,从第二种情况可以看出。如何确保_field_x_
以相同的方式验证所有参数,x
如果参数中存在数字,则_field_x_
无需在包含参数的字典中多次重新定义这些参数。另一种手动方法是验证他们何时到达 POST 端点,但这感觉很奇怪。
这里也有条件逻辑。例如,如果选中的字段是文本类型,那么用户有完全的复选框选项(因此_1_exactly
在案例 2 中),但是,如果字段是数值,那么应该_1_value_1
在案例 1 的顶部有逻辑。
如何解决这个问题?
python - 两个装饰器产生冲突
我需要使用两个装饰器,但它们相互冲突。这是我的路线:
require_oauth = ResourceProtector()
来自Authlib ,使用webargs库。
我通过cURL发送数据:@use_args
请求后我的应用程序崩溃了:
PS我试图改变装饰器的顺序,它也没有帮助,虽然它产生了一个新的堆栈跟踪:
python - 无法将带时区的 DateTime 传递给棉花糖
我需要使用 marshmallow/webargs 参数定义将带有时区的 DateTime 传递给 Flask api。我的论点定义为:
我正在调用我的 api,并将参数传递为:
但我收到此错误:
我哪里错了?
flask - 如何在烧瓶 MethodView 中为 post 方法添加 apispec?
我的项目中有以下包:1.flask (webframework) 2. webargs 和 marshmallow 用于请求和响应定义 3. apispec 和 apispec-webframework.flask 用于生成 openapi 3.0 doc。
我们的项目选择使用来自 flask 的 MethodView 来定义 API。我们的一个 API 如下所示。
apispec 文档列出了如何指定响应,但没有明确的方法来定义来自路径(resource-id)和请求正文(属性)的输入。 https://apispec.readthedocs.io/en/stable/using_plugins.html?highlight=MethodView
如果有人能阐明如何使用 webargs 和 marshmallow 来定义上述 API 的 MethodView:post() 方法的输入,我将不胜感激。
python - REST API 过滤器/使用烧瓶排序(和 webargs、marshmallow、sqlalchemy)
我正在开发我的第一个 flask-classful / sqlalchemy / marshmallow REST API。我的Delivery
数据库中有一个带有status
枚举的表:
- 新的
- 请求
- 派出
- 到达的
- 关闭
正如预期的那样,GET/deliveries/
返回一个交付列表。这是从视图中提取的当前代码:
是的,我将 webargs 参数直接传递给filter_by
. 但是,假设对于客户端中的给定屏幕,我只需要查看状态为新的或请求的交付。实现某种过滤器语法显然是有意义的,因为我想要对所有类型执行类似的操作
不幸的是,以下 GET 失败:
/deliveries/?status=new&status=requested
只返回交货status=new
- 事实上它总是选择两者中的第一个。- 由于一个相当随机的实验
/deliveries/?status=new,requested
导致 marshmallow-sqlalchemy 返回 422 Unprocessable Entity,这是可以理解的,因为new,requested
它不是status
枚举中的选项。我不确定这是功能还是错误。
顺便说一句,我可以成功传递两个不同的过滤器参数,例如/deliveries/?status=requested&user_id=123
按预期工作。
无论如何,排序和分页也是如此。目前我不知道如何在我的 API 中处理它们。我看到的当前问题:
- 我需要添加不映射到
DeliverySchema
. 这似乎表明会对模式代码产生影响。 - 我不能盲目地将所有参数都扔到
filter_by
,因为有些参数不会是过滤器。但是对于第一个用例,我很高兴能够根据新的和请求的状态进行过滤。排序和分页可以稍后进行。 - 语法逻辑需要在某个地方实现。
我什至不知道应该在堆栈中的哪个位置处理,更不用说如何实现解决方案了。当然,这是一个非常常见的用例,任何指针表示赞赏。
python - 使用 webargs 时,flassger 在 lib/python3.6/site-packages/webargs 中寻找模板
我正在使用 flask-restful、webargs、marshmallow 和 flasgger。我的代码看起来像这样:
在加载 apidocs url 时,正在 lib/python3.6/site-packages/webargs 中寻找模板。当我将 flasgger_yamlsv2 移动到该位置时,一切正常。然而我不想。希望将它们保留为 src 而不是 lib
python - 从 URL 参数解析分隔和嵌套的字段名称以获取部分响应
在Flask-RESTful
基于 API 中,我希望允许客户端通过参数部分检索 JSON 响应。?fields=...
它列出了字段名称(JSON 对象的键),这些名称将用于构造较大原始文件的部分表示。
这可能是最简单的形式,一个逗号分隔的列表:
这可以通过 webargs 的DelimitedList模式字段轻松完成,对我来说没有问题。
但是,为了允许嵌套对象的键被表示,分隔的字段列表可以包括用匹配括号括起来的任意嵌套键:
我的问题有两个:
有没有办法用原生方式做到这一点(验证和反序列化
webargs
)marshmallow
?如果没有,我将如何使用解析框架来做到这一点
pyparsing
?任何关于 BNF 语法应该是什么样子的提示都非常感谢。
python - 如何解析 webargs 中的多部分表单数据?
我需要使用webargs
. 此时我有下一个模型:
但根据要求,我收到HTTP 状态代码The request was well-formed but was unable to be followed due to semantic errors.
错误。422
以下是来自 Chrome 网络的请求副本:
解析多部分表单数据的正确方法是什么?
PS我的服务器是Flask应用程序。
flask - 在 Flask-RESTful + webargs 中未收到 GET 参数
我正在使用Resource
来自flask restful 和use_kwargs
decorator 的类来获取方法。这是代码:
但我不能通过 URL 传递参数。它总是返回缺失值。这些 URL 不起作用:
对use_args
. 但是我可以在flask.request.args
.