Estoy escribiendo una aplicación en la que los usuarios podrán almacenar información para la que pueden especificar una interfaz REST. IE, almacene una lista de productos en /<username>/rest/products
. Dado que las URL obviamente no se conocen de antemano, estaba tratando de pensar en la mejor forma de implementar la creación dinámica de URL en Flask. La primera forma en que pensé sería escribir una regla general y enrutar la URL desde allí. Pero básicamente estoy duplicando las capacidades de enrutamiento de URL cuando Flask ya las tiene incorporadas. Entonces, me preguntaba si sería una mala idea usar .add_url_rule()
(docs here, bajar un poco) para adjuntarlos directamente a la aplicación. ¿Hay alguna razón específica por la que no se debe hacer?Agregue dinámicamente reglas de URL a la aplicación Flask
Respuesta
Cada vez que ejecuta add_url_rule()
el enrutamiento interno reasigna el mapa de URL. Esto no es ni threadsafe ni rápido. En este momento no entiendo por qué necesita reglas de URL específicas del usuario para ser honesto. Suena como si realmente desearas montar aplicaciones específicas para el usuario?
Tal vez esto sea útil: http://flask.pocoo.org/docs/patterns/appdispatch/
he tenido requisito similar para mi aplicación en la que cada punto final de /<SOMEID>/rest/other
SOMEID
dada debería estar delimitado a una función diferente. Una forma de lograr esto es mantener un diccionario de búsqueda donde los valores son la función que maneja el SOMEID
específico. Por ejemplo echar un vistazo a este fragmento:
func_look_up_dict = {...}
@app.route('<SOMEID>/rest/other', methods=['GET'])
def multiple_func_router_endpoint(SOMEID):
if SOMEID in func_look_up_dict.keys():
return jsonify({'result' = func_look_up_dict[SOMEID]()}), 200
else:
return jsonify({'result'='unknown', 'reason'='invalid id in url'}), 404
por lo que para este tipo de atención que realmente no necesita "dinámica" añadir reglas de URL, sino más bien utilizar una regla de URL con parámetros y manejar los diferentes casos withing una sola función. Otra cosa a considerar es pensar realmente en el caso de uso de dicho punto final de URL. Si <username>
es un parámetro que se debe pasar, ¿por qué no usar una regla de URL como /rest/product/<username>
o pasarla como argumento en la solicitud GET? Espero que ayude.
- 1. Agregue textViews dinámicamente a linearLayout
- 2. Agregue dinámicamente la imagen a powerpoint openxml
- 3. Agregue imágenes dinámicamente a jquery
- 4. Agregue css dinámicamente a la página a través de javascript
- 5. Agregue dinámicamente elementos a una listaVer Android
- 6. ¿Agregue dinámicamente campos a la GUI de MATLAB?
- 7. JQuery validar dinámicamente agregar reglas
- 8. Administración de parámetros de URL (Python Flask)
- 9. Impedir que se agregue el enlace delimitador a la URL
- 10. En la compra de aplicaciones: agregue dinámicamente elementos no consumibles
- 11. ¿Cómo implementar la aplicación Flask en Webfaction?
- 12. Agregue dinámicamente datos a un mapa de javascript
- 13. agregue dinámicamente imágenes al widget de galería
- 14. jQuery Validación: El cambio de reglas dinámicamente
- 15. Wtforms, agregue una clase a un formulario dinámicamente
- 16. agregue el método a una clase dinámicamente con el decorador
- 17. Agregue la fuente .otf a la aplicación iphone
- 18. Unidad probando una clase de aplicación Flask
- 19. Plupload, cambiar dinámicamente url
- 20. ¿Flask admite expresiones regulares en su enrutamiento de URL?
- 21. Despliegue de una aplicación Flask con CGI
- 22. Agregue dinámicamente información sobre herramientas a las filas de la cuadrícula de kendo de una columna
- 23. ¿Cómo tener un alias de URL en Python Flask?
- 24. ¿Cómo se demoniza una aplicación Flask?
- 25. Python: agregue dinámicamente atributos a la clase de estilo nuevo/obj
- 26. ¿Cómo organizar una aplicación Flask relativamente grande?
- 27. Reescribir las reglas de salida de URL IIS7
- 28. ASP.NET MVC URL de imagen generadas dinámicamente
- 29. Agregue el elemento de formulario dinámicamente usando javascript - no enviando
- 30. Agregue dinámicamente elementos a un Menú contextual y establezca Haga clic en la acción
Tengo el mismo requisito, es decir, estoy buscando una manera de agregar dinámicamente nuevos puntos finales a una API creada con [Eve] (http://python-eve.org) utilizando su método 'register_resource', que llama' add_url_rule' internamente. Tenga en cuenta que esto no sucederá para todas las solicitudes, solo se desencadenará cuando se reciba un 'POST' para un punto final específico, por lo que el rendimiento no debería ser un problema. – kynan
Exactamente el mismo requisito aquí. Api, que necesita agregar y eliminar una nueva ruta cada vez que se produce una solicitud PUT en determinada ruta. En mi caso estoy usando un matraz, pero básicamente es lo mismo. – cllamach
Parece que puedo hacer esto en before_request si uso threading.lock, sin embargo, no estoy seguro de cómo detener problemas con url_por tener el siguiente error: ValueError: lista modificada durante sort ERROR: app: Internal Server Error, list modified durante el género – pip