¿Cuál es la mejor manera de ejecutar versiones de API REST con Python Flask

Estoy creando una API REST en Python Flask y me gustaría saber cuáles son las opciones para crear una API versionable que haga reference a una label git específica.

Lo que quiero poder hacer es especificar una versión de la API, por ejemplo, http://myapiserver.com/flaskapp/query/listcontent?version=1.1

Y luego tener el enlace de la versión de nuevo al código que he labeldo en git como v1.1.

¿Cuáles son las opciones y cuál es la mejor manera de gestionar esto?

Puedo pensar en dos forms de admitir una API versionada, pero ninguna involucra la aplicación que juega con su propio repository git como parece sugerir en su pregunta.

Digamos, por ejemplo, que tiene dos versiones de una API, v1.0 y v1.1.

La manera directa es tener las dos versiones instaladas en diferentes directorys ejecutándose, cada una escuchando en un puerto localhost diferente o unix. Las routes en estas dos versiones no necesitan tener versiones integradas, por lo que, por ejemplo, ambas pueden tener un punto final /users . Lo que une todo es un proxy inverso (como nginx) que expone estas dos API con URL externas que usan control de versiones, que asigna /v1.0/users v1.0/ /v1.1/users al server v1.0 y /v1.1/users v1.1/ /v1.1/users a v1.1 server.

Otra opción es hacer que su server v1.1 responda tanto a los puntos finales v1.1 como a los puntos finales v1.0. En este caso, el server tendrá las versiones en las routes, por lo que el server v1.1 tendrá tanto un / /v1.0/users / /v1.1/users como /v1.1/users . Esto parecería una complicación al principio, ya que cada nueva versión de la API tendrá que soportar todas las antiguas, pero también se puede ver como una optimization, porque para los puntos finales API que no cambian o tienen diferencias mínimas entre las versiones que usted puede manejarlos con el mismo código:

 @app.route('/<version>/users') def users(version): # do something return jsonify(response)