使用 openapi-generator 启用 CORS
Enabling CORS with openapi-generator
所以我正在使用 openapi-generator 生成一个烧瓶服务器来为我的 api 服务。
我在生成服务器 运行 它并在我的浏览器中查看端点时没有遇到任何问题。但是,当我从我的 React Web 应用程序发出 GET 请求时,我收到了 CORS 错误。
我尝试了一些方法来启用 CORS。
我尝试将 header 添加到我的 .yaml 中的端点。
/pipelines:
get:
summary: 'Returns a list of pipelines.'
operationId: get_pipelines
responses:
'200':
description: 'A JSON array of pipelines'
content:
application/json:
schema:
$ref: '#/components/schemas/Pipeline'
headers:
Access-Control-Allow-Origin: '*'
default:
description: Unexpected error
content:
'application/json':
schema:
$ref: '#/components/schemas/ErrorMessage'
当我尝试通过 .yaml 添加 header 并尝试重新生成服务器模块时,出现此错误:
-attribute paths.'/pipelines'(get).responses.200.Access-Control-Allow-Origin is not of type `object
我还尝试在服务器模块的 main.py 中安装和导入 flask_cors。
#!/usr/bin/env python3
import connexion
from openapi_server import encoder
from flask_cors import CORS
def main():
app = connexion.App(__name__, specification_dir='./openapi/')
CORS(app.app)
app.app.json_encoder = encoder.JSONEncoder
app.add_api('openapi.yaml',
arguments={'title': 'ICDR API'},
pythonic_params=True)
app.run(port=5050)
if __name__ == '__main__':
main()
我同时尝试了这两种方法。我在 swagger-codegen petstore.yaml example and in the connexion docs 中找到了这些修复程序。
然而,正如我所说,我正在使用 openapi-generator,因此它与其他任何一种工具都略有不同,但我很难找到有关如何正确设置它的任何信息。有没有人在openapi-generator之前工作过谁能帮帮我?
OpenApi 代码生成器使用 connexion library under the hood, in their documentation they propose using flask_cors see: here
我目前使用的是从原始模板派生出来的自定义小胡子模板,所以在 \__main__.mustache
我添加了行
from flask_cors import CORS
....
CORS(app.app)
app.run(port=.....)
确保安装 flask_cors
或将其添加到您的 requirements.txt
P.S。您可以使用 generate ... -t TEMPALTE/FOLDER?LOCATION
指定模板位置
所以我正在使用 openapi-generator 生成一个烧瓶服务器来为我的 api 服务。
我在生成服务器 运行 它并在我的浏览器中查看端点时没有遇到任何问题。但是,当我从我的 React Web 应用程序发出 GET 请求时,我收到了 CORS 错误。
我尝试了一些方法来启用 CORS。
我尝试将 header 添加到我的 .yaml 中的端点。
/pipelines:
get:
summary: 'Returns a list of pipelines.'
operationId: get_pipelines
responses:
'200':
description: 'A JSON array of pipelines'
content:
application/json:
schema:
$ref: '#/components/schemas/Pipeline'
headers:
Access-Control-Allow-Origin: '*'
default:
description: Unexpected error
content:
'application/json':
schema:
$ref: '#/components/schemas/ErrorMessage'
当我尝试通过 .yaml 添加 header 并尝试重新生成服务器模块时,出现此错误:
-attribute paths.'/pipelines'(get).responses.200.Access-Control-Allow-Origin is not of type `object
我还尝试在服务器模块的 main.py 中安装和导入 flask_cors。
#!/usr/bin/env python3
import connexion
from openapi_server import encoder
from flask_cors import CORS
def main():
app = connexion.App(__name__, specification_dir='./openapi/')
CORS(app.app)
app.app.json_encoder = encoder.JSONEncoder
app.add_api('openapi.yaml',
arguments={'title': 'ICDR API'},
pythonic_params=True)
app.run(port=5050)
if __name__ == '__main__':
main()
我同时尝试了这两种方法。我在 swagger-codegen petstore.yaml example and in the connexion docs 中找到了这些修复程序。
然而,正如我所说,我正在使用 openapi-generator,因此它与其他任何一种工具都略有不同,但我很难找到有关如何正确设置它的任何信息。有没有人在openapi-generator之前工作过谁能帮帮我?
OpenApi 代码生成器使用 connexion library under the hood, in their documentation they propose using flask_cors see: here
我目前使用的是从原始模板派生出来的自定义小胡子模板,所以在 \__main__.mustache
我添加了行
from flask_cors import CORS
....
CORS(app.app)
app.run(port=.....)
确保安装 flask_cors
或将其添加到您的 requirements.txt
P.S。您可以使用 generate ... -t TEMPALTE/FOLDER?LOCATION