问题标签 [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.

0 投票
0 回答
166 浏览

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文件heatmapbackend/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. 。所以我的设置一定是有缺陷的。你能指出我这里有什么不正确的地方吗?

0 投票
0 回答
552 浏览

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 的顶部有逻辑。

如何解决这个问题?

0 投票
1 回答
233 浏览

python - 两个装饰器产生冲突

我需要使用两个装饰器,但它们相互冲突。这是我的路线:

require_oauth = ResourceProtector()来自Authlib ,使用webargs。 我通过cURL发送数据:@use_args

请求后我的应用程序崩溃了:

PS我试图改变装饰器的顺序,它也没有帮助,虽然它产生了一个新的堆栈跟踪:

0 投票
1 回答
1441 浏览

python - 无法将带时区的 DateTime 传递给棉花糖

我需要使用 marshmallow/webargs 参数定义将带有时区的 DateTime 传递给 Flask api。我的论点定义为:

我正在调用我的 api,并将参数传递为:

但我收到此错误:

我哪里错了?

0 投票
0 回答
262 浏览

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() 方法的输入,我将不胜感激。

0 投票
0 回答
1153 浏览

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,因为有些参数不会是过滤器。但是对于第一个用例,我很高兴能够根据新的和请求的状态进行过滤。排序和分页可以稍后进行。
  • 语法逻辑需要在某个地方实现。

我什至不知道应该在堆栈中的哪个位置处理,更不用说如何实现解决方案了。当然,这是一个非常常见的用例,任何指针表示赞赏。

0 投票
1 回答
141 浏览

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

0 投票
1 回答
278 浏览

python - 从 URL 参数解析分隔和嵌套的字段名称以获取部分响应

Flask-RESTful基于 API 中,我希望允许客户端通过参数部分检索 JSON 响应。?fields=...它列出了字段名称(JSON 对象的键),这些名称将用于构造较大原始文件的部分表示。

这可能是最简单的形式,一个逗号分隔的列表:

这可以通过 webargs 的DelimitedList模式字段轻松完成,对我来说没有问题。


但是,为了允许嵌套对象的键被表示,分隔的字段列表可以包括用匹配括号括起来的任意嵌套键:


我的问题有两个:

  1. 有没有办法用原生方式做到这一点(验证和反序列化webargsmarshmallow

  2. 如果没有,我将如何使用解析框架来做到这一点pyparsing?任何关于 BNF 语法应该是什么样子的提示都非常感谢。

0 投票
1 回答
495 浏览

python - 如何解析 webargs 中的多部分表单数据?

我需要使用webargs. 此时我有下一个模型:

但根据要求,我收到HTTP 状态代码The request was well-formed but was unable to be followed due to semantic errors.错误。422

以下是来自 Chrome 网络的请求副本:

解析多部分表单数据的正确方法是什么?

PS我的服务器是Flask应用程序。

0 投票
1 回答
405 浏览

flask - 在 Flask-RESTful + webargs 中未收到 GET 参数

我正在使用Resource来自flask restful 和use_kwargsdecorator 的类来获取方法。这是代码:

但我不能通过 URL 传递参数。它总是返回缺失值。这些 URL 不起作用:

use_args. 但是我可以在flask.request.args.