【问题标题】:swagger auto-generated flask server headersswagger 自动生成的烧瓶服务器标头
【发布时间】:2017-03-03 08:54:41
【问题描述】:

我正在使用 swagger 编辑器(版本 2.10.5)生成一个使用自定义标头的烧瓶 api,并开始在每个路径中添加以下行:

 parameters:
    - $ref: '#/parameters/X-Forwarded-Host'

相对定义:

 X-Forwarded-Host:
    name: 'X-Forwarded-Host'
    in: header
    description: Forwarded host header
    required: true
    type: string

然后运行自动生成的烧瓶服务器

$ 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)将所有“-”设置为“_”?

提前致谢

【问题讨论】:

    标签: flask swagger-editor swagger-codegen


    【解决方案1】:

    好吧,我想通了..

    问题不在于 swagger-editor 本身,而在于它如何生成烧瓶 (Connexion) 代码。

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

    “目前,标头参数不作为参数传递给处理函数。但可以通过底层 connexion.request.headers 对象访问,该对象为 flask.request.headers 对象起别名。”

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

    发件人:

    def health_get(X_Forwarded_Host):
        ...
    

    收件人:

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

    再见!

    【讨论】:

      猜你喜欢
      • 2020-07-27
      • 2014-06-03
      • 1970-01-01
      • 2023-04-02
      • 2013-02-24
      • 1970-01-01
      • 1970-01-01
      • 2017-11-04
      相关资源
      最近更新 更多