相关疑难解决方法(0)

最简洁的方法将生成的Flask应用程序代码(Swagger-Codegen)粘贴到后端实现

我有:

  1. 一个做[Stuff]的库
  2. 一个昂首阔步的API定义,大致相当于#1,只是略有不同,可以干净地映射到REST服务
  3. 使用Swagger-Codegen生成#2的烧瓶应用程序 - 例如,导致python控制器函数与#1大致一对一.

我的意图是烧瓶应用程序(所有生成的代码)应该只处理实际REST api和参数解析的映射,以匹配swagger中编码的API规范.在任何参数解析(再次生成代码)之后,它应该直接调用我的(非生成的)后端.

我的问题是,如何通过手工编辑生成的python/flask代码来解决这些问题?(对我的设计的反馈,或实现这一点的正式设计模式的细节也会很棒;我是这个领域的新手).

从发生器新鲜,我最终得到python函数,如:

def create_task(myTaskDefinition):
    """
    comment as specified in swagger.json
    :param myTaskDefinition: json blah blah blah
    :type myTaskDefinition: dict | bytes
    :rtype: ApiResponse
    """
    if connexion.request.is_json:
        myTaskDefinition = MyTaskTypeFromSwagger.from_dict(connexion.request.get_json())
    return 'do some magic!' # swagger codegen inserts this string :)
Run Code Online (Sandbox Code Playgroud)

在后端我有我的实际逻辑:

def create_task_backend(myTaskDefinition):
    # hand-coded, checked into git: do all the things
    return APIResponse(...)
Run Code Online (Sandbox Code Playgroud)

什么是正确的create_task()打电话方式create_task_backend()?

当然,如果我对我的swagger规范进行重大更改,我将不得不手动更新未生成的代码; 但是,我可能想要重新生成我的API有很多原因(比如,添加/优化MyTaskTypeFromSwagger类,或者完全跳过检查git生成的代码),如果我必须手工编辑生成的API代码,那么所有这些每次重新生成时,编辑都会被吹走.

当然,我可以用例如一个简单的语法编写脚本.pyparsing; 虽然这是我第一次遇到这个问题,但它似乎已经被广泛解决了!

python rest flask swagger swagger-codegen

16
推荐指数
2
解决办法
4175
查看次数

标签 统计

flask ×1

python ×1

rest ×1

swagger ×1

swagger-codegen ×1