swagger自动生成的flask服务器头

swagger自动生成的flask服务器头,flask,swagger-editor,swagger-codegen,Flask,Swagger Editor,Swagger Codegen,我正在使用swagger editor(版本2.10.5)生成一个使用自定义头的flask api,并开始向每个路径添加以下行: parameters: - $ref: '#/parameters/X-Forwarded-Host' 相对定义: X-Forwarded-Host: name: 'X-Forwarded-Host' in: header description: Forwarded host header required: true

我正在使用swagger editor(版本2.10.5)生成一个使用自定义头的flask api,并开始向每个路径添加以下行:

 parameters:
    - $ref: '#/parameters/X-Forwarded-Host'
相对定义:

 X-Forwarded-Host:
    name: 'X-Forwarded-Host'
    in: header
    description: Forwarded host header
    required: true
    type: string
然后运行自动生成的flask服务器

$ python3 -m swagger_server
造成了一些问题:

  • 发出curl请求时,标头的计算结果不正确:

    $ curl -X GET --header 'Accept: application/json' --header 'X-Forwarded-Host: example.com' http://localhost:8080
    
    返回

    health_get() missing required positional argument: 'X_Forwarded_Host'
    
  • 自动生成的测试也没用:

    headers = [('X_Forwarded_Host', 'X_Forwarded_Host_example'), ...
    
我做错了什么?为什么swagger editor(或codegen)会将所有“-”设置为“”

提前谢谢好的,我想

问题不在于swagger编辑器本身,而在于它如何生成flask(Connexion)代码

Connexion请求处理文档()说明:

当前,标头参数未作为参数传递给处理程序函数。但可以通过基础connexion.request.headers对象访问它们,该对象别名为flask.request.headers对象

解决方案是从自动生成的控制器中删除所有函数属性(与标题相关),并从请求对象中拾取它们,因此:

发件人:

致:

再见

def health_get(X_Forwarded_Host):
    ...
def health_get():
    forwarded_host = connexion.request.headers['X-Forwarded-Host']