问题标签 [flask-restx]
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 - Python Flask_restplus flash_restx 动态编组响应
是否可以动态修改编组响应模型(即:更改字段列表,添加掩码,...)?
前任 :
在这里,编组是用装饰器静态声明的。如果我想在用户不是管理员时屏蔽示例 date_updated ,或者根据用户偏好我不能。
我看到了这个例子:https ://blog.fossasia.org/dynamically-marshaling-output-in-flask-restplus/ 这很有趣,但它使用了另一个静态模型,所以它不是真正的动态并且意味着代码重复(当然我可以使用继承,...)
我想要的是能够动态更改字段或从可能来自数据库的列表中添加掩码(例如,用户首选项或权限)。
我试图手动编组答案
如果我删除装饰器@marshall_with 它可以完美运行,但缺点是我不再有 Swagger doc
如果我保留装饰器,它仍然可以通过不需要的字段仍然使用 Null 值呈现:
这不是预期的结果
我试图转移到flask_restx,我的招摇根本没有渲染,我还有其他一些问题。
非常欢迎任何帮助!
python - 无法从顶级包导入 var
这是我的项目结构:
主要是我需要在 users.py 中使用的 mongo var
在服务初始化.py
我尝试在以下位置导入 mongo var:
当我做:
它向我抛出了这个错误:
回溯(最后一次调用):文件“main.py”,第 7 行,从服务导入 api 文件“C:\myProject\src\services_ init _.py”,第 6 行,从 .users 导入 api 作为 ns_users文件 "C:\myProject\src\services\users.py",第 5 行,inices\users.py",第 5 行,从主导入 mongo 文件 "C:\myProject\src\main.py",第 7 行, in .py", line 7, in from services import api end_analisis_predccion_equipos_b ImportError: cannot import name 'api' from 'services' (C:\myProject\src\services_ init _.py)
flask - Flask-RESTX - 响应正文中的阿拉伯文本
我正在用 swagger,flask-restx 运行一个休息 api
但是,我的问题是,在招摇用户界面(http://127.0.0.1:5000/?)中,当测试端点时,响应正文中的阿拉伯文本作为扩展字符返回\\u0645\\u0635\\u0646\\u0648\\u0639 \\u0645\
使用邮递员时同样的问题
使用 sublime text 请求包或者只是在浏览器中输入 URL 时不会出现问题(我有一个 jsonify 扩展)
这是我的代码的缩短版本
当我调用端点products
时它工作正常,但当我调用product
它时却不行。
python - 如何在 Flask Restx 中建模 OneOf?
我有以下架构文档
我正在尝试创建烧瓶 restx 模型,但我不确定如何为所需的 OneOf 字段建模?
我认为以下将起作用,但随后它忽略了 oneof 要求。
sql - 在连接上扩展 SQL 查询的最佳实践?
我正在编写一个与 SQL 一起使用的 REST api,并且经常发现自己处于与此类似的情况,我需要通过查询表连接来返回具有嵌套列表的对象列表。
假设我在用户和组之间有一个多对多的关系。我有一个用户表和一个组表以及它们之间的连接表用户组。现在我想编写一个 REST 端点,它返回一个用户列表,以及每个用户他们注册的组。我想返回一个格式如下的 json:
我能想到的有两种或三种查询 SQL 的方法:
- 发出可变数量的 SQL 查询:查询用户列表,然后遍历每个用户以查询联结链接以填充每个用户的组列表。SQL 查询的数量随着返回的用户数量线性增加。
示例(使用 python flask_sqlalchemy / flask_restx):
- 发出固定数量的 SQL 查询:这可以通过发出一个单一的 SQL 查询来完成,该查询执行所有连接,在用户的列中可能存在大量冗余数据,或者,通常更优选地,几个单独的 SQL 查询。例如,查询用户列表,然后查询加入 GroupUsers 的组表,然后在服务器代码中手动对组进行分组。
示例代码:
- 第三种方法,用处有限,是使用 string_agg 或类似的方法来强制 SQL 将一个分组连接到一个字符串列中,然后将字符串解包到一个列表服务器端,例如,如果我想要的只是组号 I可以使用 string_agg 和 group_by 在对 User 表的一次查询中取回“1,2”。但这仅在您不需要复杂对象时才有用。
我被第二种方法所吸引,因为我觉得它更高效和可扩展,因为 SQL 查询的数量(我认为这是没有特别好的理由的主要瓶颈)是恒定的,但它需要在服务器上做更多的工作将所有组过滤到每个用户中。但我认为使用 SQL 的部分目的是利用其高效的排序/过滤功能,因此您不必自己动手。
所以我的问题是,我是否认为以更多的服务器端处理和开发时间为代价使 SQL 查询的数量保持不变是个好主意?尝试减少不必要的 SQL 查询数量是否浪费时间?如果我不这样做,当大规模测试 API 时,我会后悔吗?有没有更好的方法来解决我不知道的这个问题?
python - 使用 Flask 中的 RequestParser 验证浮点参数是否在范围内
我正在使用 Python 上的 Flask Restplus 创建一个 API,它接收位置信息字典(例如 {lat: 10, lon:80}),进行一些数学建模并输出结果。我目前正在使用RequestParser对象来解析参数。我需要对坐标运行一些错误处理,以确保我的 API 可以返回正确的错误(例如,当提供的纬度或经度超出范围时)。因此,我需要对解析的参数进行一些验证。
我可以运行一些 if-else 函数来检查我的 API 对象中的每个解析参数,但这似乎有点罗嗦。我想知道是否有更简洁的方法可以使用 RequestParser 对象来做到这一点?如果不是 RequestParser 对象,是否有另一个包(与 Flask Restplus 兼容)可用于解析我的浮点输入?
python - Flask-Restx Api.model(strict=True) 允许未指定的参数
我有一个简单的用户资源,它带有一个 put 方法来更新除用户密码之外的所有用户信息。根据 Flask-Restx 文档,当模型将严格和验证参数设置为 true 时,如果在请求中提供了未指定的参数,则会引发验证错误。但是,这似乎对我不起作用。
型号定义:
资源和方法定义:
失败的测试:
这里的 response.status_code 是 200,因为在请求正文中传递的未指定参数不会引发验证错误。
我是否不正确地使用了严格的参数?我是否误解了严格的行为?
更新:我已经添加了来自 Flask-RestX repo 的严格模型参数的测试(可以在这里找到)以获得更多关于预期行为的上下文:
nginx - Swagger 在 flask-restx 中的服务器中不起作用
我已经部署了我的烧瓶后端服务器Nginx
。我可以在本地看到我的招摇文档127.0.0.1:5000
也转到我的服务器 IP 地址和端口号server_ip:5000
。我可以看到我的 API 文档只使用我的服务器域名吗?http://example.com它给了我以下错误。我的 nginx 配置在这里
python - Python REST-API 与 Flask-RestX 和 JavaScript REST-Client 一起提供服务
我运行这个示例:https : //flask-restx.readthedocs.io/en/latest/example.html(带有 Flask-RESTX 的 Python REST-API)
代码片段
结果
我得到了 REST-API 的以下 URL:
http://127.0.0.1:5000 -> Swagger 文档
http://127.0.0.1:5000/swagger.json
http://127.0.0.1:5000/todos/{id}
问题
我想用 Javascript 实现一个 Webclient,应该通过以下 URL 访问:
http://127.0.0.1:5000 -> index.html
http://127.0.0.1:5000/style.css
REST-API 的 URL 应更改为:
http://127.0.0.1:5000/api -> Swagger 文档
http://127.0.0.1:5000/api/swagger.json
http://127.0.0.1:5000/api/todos/
http://127.0.0.1:5000/api/todos/{id}
如何扩展示例以生成所需的 URL?
python - Flask 应用程序启动时,如何使用从 DB 获取的数据作为 add_argument() 中的值?
我使用以下 Flask 应用程序的项目结构flask-restx
在controller.py
中,我正在添加add_argument()
语句并在 api 路由中解析它们。在其中一个add_argument()
声明中,我想choices
为用户添加。为了获得选择,我从数据库中查询并获取list
可用的值。然后我将其转换list
为 a tuple
,将其分配给一个变量,并将其作为choices
参数传递给add_argument()
我的代码:
数据.py
控制器.py
ns
在哪里namespace
。
我__init__.py
在app
文件夹中的文件如下:
该应用程序的入口点是main.py
的输出print(v)
如下:
我希望在参数v
中使用这些值。controller.py
'vendor'
我尝试通过添加来获取v
from的值,但它显示以下错误main.py
from main import v
controller.py
ImportError: cannot import name 'v' from 'main'
我在做什么错误?