forma más limpia de pegar el código de la aplicación Flask generado (Swagger-Codegen) para la implementación del backend
Yo tengo:
una biblioteca que hace [cosas]una definición de API swagger, que es aproximadamente # 1 con pequeñas diferencias para mapear limpiamente a un servicio RESTuna aplicación de matraz generó # 2 usando Swagger-Codegen, por ejemplo, da como resultado que las funciones del controlador de Python sean aproximadamente uno a uno con el # 1.Mi intención es que la aplicación de matraz (todo el código generado) solo debe manejar la asignación de esa API REST real y el análisis de parámetros para que coincida con la especificación API codificada en swagger. Después de cualquier análisis de parámetros (nuevamente, código generado), debe llamar directamente a mi backend (no generado).
Mi pregunta es, ¿cuál es la mejor manera de conectarlos sin editar manualmente el código python / frasco generado? (La retroalimentación sobre mi diseño o los detalles de un patrón de diseño formal que logre esto también sería genial; soy nuevo en este espacio).
Recién salido del generador, termino con funciones de python como:
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 :)
En el backend tengo mi lógica real:
def create_task_backend(myTaskDefinition):
# hand-coded, checked into git: do all the things
return APIResponse(...)
¿Cuál es la forma correcta de llegar?create_task()
llamarcreate_task_backend()
?
Por supuesto, si hago cambios de última hora en mi especificación de swagger, tendré que actualizar a mano el código no generado independientemente; sin embargo, hay muchas razones por las que podría querer volver a generar mi API (por ejemplo, agregar / refinar elMyTaskTypeFromSwagger
clase, u omitir registrar en git el código generado) y si tengo que editar manualmente el código API generado, entonces todas esas ediciones se eliminan con cada nueva generación.
Por supuesto, podría escribir esto con una ~ gramática simple, por ejemplo. piratería pero si bien esta es mi primera vez con este problema, ¡parece probable que ya se haya resuelto ampliamente!