python - soporta - Botella y json
optimizar consultas mysql explain (5)
Es fácil obtener json usando el módulo de solicitud de la botella.
from bottle import request
json_data = request.json # json_data is in the dictionary format
¿Cómo hago para devolver datos json desde un controlador de solicitud de botella? Veo un método dict2json en la botella src pero no estoy seguro de cómo usarlo.
Lo que está en la documentación:
@route(''/spam'')
def spam():
return {''status'':''online'', ''servertime'':time.time()}
Me da esto cuando abro la página:
<html>
<head></head>
<body>statusservertime</body>
</html>
Por alguna razón, la función auto-json de bottle no funciona para mí. Si tampoco te funciona, puedes usar este decorador:
def json_result(f):
def g(*a, **k):
return json.dumps(f(*a, **k))
return g
También es útil:
def mime(mime_type):
def decorator(f):
def g(*a, **k):
response.content_type = mime_type
return f(*a, **k)
return g
return decorator
Simplemente devuelve un dict. Botella se encarga de la conversión a JSON para usted.
Incluso los diccionarios están permitidos. Se convierten a json y se devuelven con el encabezado Content-Type establecido en application / json. Para deshabilitar esta función (y pasar los dicts a su middleware), puede establecer bottle.default_app (). Autojson en False.
@route(''/api/status'')
def api_status():
return {''status'':''online'', ''servertime'':time.time()}
Tomado de la documentación.
prueba esto debería funcionar como es debido
from bson.json_util import dumps
from bottle import route, run
import time
@route(''/'')
def index():
return {''status'':''online'', ''servertime'':dumps(time.time()) }
run(host=''localhost'', port=8080)
return {''status'':''online'', ''servertime'':time.time()}
funciona perfectamente bien para mí. ¿Has importado time
?
Esto funciona:
import time
from bottle import route, run
@route(''/'')
def index():
return {''status'':''online'', ''servertime'':time.time()}
run(host=''localhost'', port=8080)