我有:
我的意图是烧瓶应用程序(所有生成的代码)应该只处理实际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; 虽然这是我第一次遇到这个问题,但它似乎已经被广泛解决了!