问题标签 [connexion]

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 回答
5269 浏览

python - 连接中的 ModuleNotFoundError

我有一个OpenAPI 3.0规范,我想将它与Connexion一起使用来运行 Python 服务。

API规范的相关部分在这里:

Python 代码的结构如下:

的内容api.py

find函数本身按预期工作:

在 Python 中,Connexion 可以很好地加载 API:

现在,我可以成功调用端点:

但是,当我使用Connexion CLI运行它时,我看到ModuleNotFoundError

输出:

在这种情况下,路径/包名称可能有问题。但是,我也尝试了从lib目录等中调用它的许多变体,但没有运气。另外,我尝试仅使用方法名称并在x-swagger-router-controller属性中指定包,但也没有运气。

我无法operationId在 Connexion 文档中找到有关如何正确指定的更多具体细节,所以我什至不清楚这是否与 Python 模块本身、OpenAPI 规范或调用 Connexion 的方式有关。

关于从哪里开始挖掘的任何提示?为什么命令行客户端找不到service模块?相对于工作目录,模块应该驻留在哪里?

0 投票
4 回答
584 浏览

python - openapi 代码生成器 - python 服务器存根工作流程

我正在使用 openapi-generator 生成服务器存根 python 代码。一切正常,但是,每次我对 OpenAPI 规范(yaml 文件)进行更改时,代码生成器都会覆盖整个代码,甚至是定制的代码(控制器)。我想开发一个增量工作流,如果我对规范进行更改,生成器会修改仅处理该部分代码的代码。

如果我能够执行规范并拥有增量工作流程,那就太好了。

我正在使用 openapi-generator 版本 3.3.4。

我试图修改控制器并删除# noqa: E501,但每次我从规范生成存根时,它仍然会覆盖代码。

由于生成的代码不是 OOP,如何通过生成的接口隔离控制器实现?

0 投票
0 回答
157 浏览

python - 使用多个服务器 URL 路由失败

我已经使用ConnexionOpenAPI 3.0部署了一个 Web 服务。我在本地运行它以进行调试测试,然后将其部署到生产服务器。

我正在努力解决如何在 OpenAPI 文件中正确指定服务器 URL。当我指定这个时,一切都按预期工作:

我可以通过一个简单的调用来测试它:

同样适用于生产服务器:

但是,我想指定生产服务器的 URL,以便充分利用 OpenAPI 的强大功能(例如,生成 cURL 调用的 UI)。所以我添加了另一个网址:

但是,当我调用该服务时,生产服务器上不再找到该端点:

我已经验证了很多次,以确保调用是相同的,并且添加的 URL 条目是唯一的更改。

当我删除该localhost行时,它既不能在本地工作,也不能在生产服务器上工作。

我认为这与 Connexion 如何读取 API 规范以及它如何设置路由有关。不过,关于这方面的文档非常稀少,而且我找不到关于 Connexion 和 OpenAPI 3.0 最佳实践的其他示例。

任何提示最佳实践是什么和/或从哪里开始调试此问题?

0 投票
1 回答
177 浏览

python-3.x - 如何在 Swagger 中处理非必需参数以避免丢失位置参数错误?

我的端点有一个 Swagger 文件,我的端点之一有几个参数。您如何处理非必需参数?如果非必需参数具有空值,我将面临如何在我的 Python 文件中处理它的挑战。

这是我的 Swagger 定义:

这是我用 Python 编写的函数(使用 Connexion):

0 投票
1 回答
299 浏览

python - 如何禁止对烧瓶应用程序中的 POST 端点的非浏览器请求(用户代理)?

我正在加载登录表单以进行用户验证。我想知道是否可以将flask应用程序中的端点限制为仅响应我之前为其加载表单的浏览器请求。

我认为 CSRF 令牌可能是一种选择,但我想知道是否有更好的方法来做到这一点。

我希望能够禁止 P​​ostman、curl 和其他用户代理向特定端点发送请求,除非它来自具有 UI 登录表单的浏览器。

0 投票
0 回答
461 浏览

flask - Connexion & Flask:在请求处理程序中访问数据库

我想db在应用程序的端点处理程序中访问对象connexion

目前我将它附加到current_appapp.py 中:

然后在 handlers.py 中访问它

这是正确的方法还是我应该更喜欢 Flask 的g上下文变量current_app?它们都是上下文变量,但何时使用有点令人困惑。

由于无法from app import db在 handlers.py 中执行

connexion_app.add_api("swagger.yaml")这可能是由循环依赖或由相关机制触发的那种东西引起的。


这是我swagger.yml的仅供参考。

0 投票
3 回答
993 浏览

python - 如何在 python flask api 应用程序启动时处理 FlaskInjector 错误?

我用堆栈在python中设置了一个最基本的API结构

flask - connexion - flaskInjector

根据下面显示的代码。当 API 运行并初始化 FlaskInjector 时,它会失败并显示错误消息:

injector.CallError:调用 RequestScope。init()失败:init()缺少1个必需的位置参数:'injector'(注入堆栈:[])

我的系统是Ubuntu 18.04,conda环境下的包如下:

conda 列表的相关摘录:

该项目的组织如下:

./app.py:

./api/items.py:

./providers/provider.py:

./swagger/app.yaml:

在使用 python app.py 运行应用程序时,api 服务器按预期启动:

但是,在浏览器中寻址服务器或项目端点时,会出现以下故障堆栈:

0 投票
0 回答
243 浏览

python - 无法使用 swagger 2.0 在 python 中呈现 HTML 模板

目标:

使用 swagger、python、mongoDB 测试所有 HTTP 请求。我正在尝试使用 URL(在 swagger 中定义)点击 python 函数(包含'home.html'),但得到原始 HTML 作为响应。计划是通过 GET 请求命中它,然后在使用 HTML 表单后测试其他 HTTP 请求。

我试过使用烧瓶'@app.route('/home')',它正在工作,但我不想使用它。

招摇.yml ----

测试.py ----

html响应----

0 投票
1 回答
204 浏览

flask-restful - 使用路径参数在定义的资源上获取 404

我开始使用 connexion 和 flask 学习 Python,但在解决问题时遇到了困难。即使休息了很长时间,我也看不出我错在哪里,需要一些建议。我创建了一个 swagger API 定义,它将 /api/blacklist/{zipcode} 映射到一个函数。但是,当我尝试访问 /api/blacklist/12345 时,我收到 404。YAML 位于此处:

https://github.com/TheHasgarion/pythonflaskrest/blob/master/api.yml

/api/blacklist/ 的映射工作得很好。顺便说一句,即使访问 /api/blacklist/ 也会给我一个 404。

服务器日志说:

非常感谢您的指导。

0 投票
0 回答
531 浏览

docker - 在 Nginx 中向 uWSGI 公开 Flask (connexion) 实例

在运行我的 Docker 映像并请求 Swagger UI 时,我收到:502 Bad Gateway.

我正在尝试在 nginx 上使用 uWSGI 运行 Connexion(基于 Flask 的 Swagger UI 生成器)。我认为这是因为 uWSGI 没有正确获取我的 Flask 实例。但是,在我看来,我的容器实例配置正确。

如果你看这里https://github.com/Microsoft/python-sample-vscode-flask-tutorial,我的应用程序的设置和配置是相似的,它可以正常工作。

根据 Connexion 文档,我应该能够使用

你可以在这里找到我完整的应用程序代码:

https://bitbucket.org/lammy123/flask_nginx_docker_connexion/src/master/

Flask/Connexion 对象在 application/__init__.py

uwsgi.ini:

__init__.py:

webapp.py:

使用内置开发服务器运行代码可以工作。

预期行为是 Swagger UI 在以下位置可用:

http://localhost:5000/v1.0/ui/#/

从 Docker 容器运行时。