问题标签 [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 投票
1 回答
235 浏览

python - 使用带有 flask_smorest 和/或 marshmallow 的自定义解析器

我正在使用flask-smorest,基于 Flask/Marshmallow 的 REST API 框架,并且希望能够解析使用axios JavaScript 库发出的请求,特别是对于通过查询字符串传递的数组。

Axios 发送这样的数组:

我需要为此创建一个自定义解析器(另请参阅我创建的票证上的有用响应),因此我能够拼凑出一个基本的解析器来满足我的目的。

但是对于我的生活,我无法弄清楚如何告诉 flask_smorest 或 marshmallow 将此自定义解析器用于我的MethodView基于 API 的端点。

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

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

0 投票
1 回答
2058 浏览

python - Flask、Marshmallow 3 和 webargs use_args 无法解析参数

对于 Flask 1.1.2、marshmallow 3.6.1 和 webargs 6.1.0,我所有的论点总是missing.

架构:

蓝图.py:

当我 curl 任何值时,limitoffset总是使用该default值。

curl http://localhost:8000/exports?limit=5930

log: "qparams {'limit': 10, 'offset': 0}"}

我希望ValidationError提高 a ,因为限制应该 > 100。

当我卷曲一个未知参数时,我希望 aValidationError被提高,因为它是一个未知参数。这也无法按预期工作。

curl http://localhost:8000/exports?lkfjdskl=fkjdsl

返回 200 并且没有qparams.

我在结合webargs,Flask和时做错了marshmallow什么?

0 投票
1 回答
585 浏览

python - 如何使用 webargs 从查询参数中按值解析枚举?

我有下一个枚举:

和架构:

在 Flask 之后,我声明了 GET 方法webargs

它失败并出现错误:

我在调试器中检查了它,发现EnumField调用EStatus(value). 问题是我的值是str类型,因为它来自查询参数。

如何在调用之前EnumField将其转换为?intEStatus(value)

0 投票
1 回答
1383 浏览

python - 使用 webargs 验证 AWS lambda 中的查询字符串参数和请求正文

我试图找出验证使用 AWS API 网关创建并由 Python Lambda 函数支持的 API 的查询字符串参数的方法。API Gateway 可以验证是否存在所需的查询字符串参数。但是,我找不到其他验证的方法,例如确定某个参数的长度是否在某个限制范围内(例如 config_id 至少应为 7 个字符长)。使用 API Gateway 请求验证可以对请求正文进行此类验证。参考这个链接。但是,对于查询字符串参数,仅需要/不需要验证是可能的,因为它不使用任何 json 模式进行验证。

因此,为了克服这个问题,我决定尝试Python 中的 webargs 模块来验证查询字符串参数。它通常用于对使用 Python 框架(如 flask 或 django)创建的 API 进行请求验证。我正在使用核心解析器(请参阅webargs doc),如下所示:

这就是在 lambda 函数中完成验证的方式。但是,只有所需的验证才能正常工作。当我传递长度为 5 的 config_id 时,它不会返回任何错误并在 lambda 函数中继续进行。

这可能出了什么问题?解析器似乎工作,但是,验证功能没有。任何帮助表示赞赏,因为我是新手。此外,是否有更好的方法在 lambda 函数中进行验证,尤其是对于 queryStringParameters?它可以由代码处理,但我们可以有许多参数和许多 API,这使得为所有此类验证编写代码成为一项繁琐的任务。webargs 模块派上用场了。

0 投票
1 回答
252 浏览

python - webargs 的字典 vs Marshmallow 数据类模式

webargs模块允许将参数模式描述为纯字典或棉花糖数据类模式:

第一个变体看起来更短更快,但我们失去了 IDE 中的语法高亮和类型检查(因为它是 dict),而且它导致更长的调用,即args['field1']而不是arg.field1.

您在大型项目中使用哪种变体?在使用第一个或第二个变体时是否有一些最佳实践?

0 投票
0 回答
161 浏览

python - flask-apispec 没有使用来自 GET 查询的值填充 kwargs(文档中示例代码的实现)

我使用flask-apispecwithwebargs来定义简单 API 的类型。我在下面制作了一个最小的示例,它重现了该问题,即kwargs对象为空。

服务器代码:

简单的客户端脚本:

为什么kwargs字典是空的?我看不出上面的内容与 flask-apispec 文档中的示例有何不同。

0 投票
1 回答
71 浏览

python - 验证 args 时 webargs 出现异常

最近我在使用 webargs(8.0.1) 和 flask-restful(0.3.8) 时遇到了一些问题

当我尝试使用时异常抛出两次cURL http://127.0.0.1:5001/?score=100A

我认为它应该返回带有函数的 jsonfy 错误消息,handle_request_parsing_error但它只返回 HTTP 500 错误。

希望有人能帮我解决这个问题,非常感谢