Pregunta
¿Cómo hago para devolver datos JSON desde un controlador de solicitudes botella. Veo un método dict2json en el src botella, pero no estoy seguro de cómo usarlo.
¿Qué hay en la documentación:
@route('/spam')
def spam():
return {'status':'online', 'servertime':time.time()}
Me da esto cuando aparezca la página:
<html>
<head></head>
<body>statusservertime</body>
</html>
Solución
Simplemente devolver un dict. manijas de botella de la conversión a JSON para usted.
Incluso se permiten los diccionarios. Ellos se convierten en JSON y volvieron con Content-Type juego de cabecera en application / json. Para desactivar esta característica (y pasar dicts al middleware) se puede establecer bottle.default_app (). Autojson en Falso.
@route('/api/status')
def api_status():
return {'status':'online', 'servertime':time.time()}
http://bottlepy.org/docs/stable/api. html #-la botella de clase
Otros consejos
Por alguna razón, función de auto-JSON de botella no funciona para mí. Si no lo hace el trabajo para usted tampoco, se puede usar el decorador:
def json_result(f):
def g(*a, **k):
return json.dumps(f(*a, **k))
return g
También es práctico:
def mime(mime_type):
def decorator(f):
def g(*a, **k):
response.content_type = mime_type
return f(*a, **k)
return g
return decorator
return {'status':'online', 'servertime':time.time()}
funciona perfectamente bien para mí. Tiene importado time
?
Estos trabajos:
import time
from bottle import route, run
@route('/')
def index():
return {'status':'online', 'servertime':time.time()}
run(host='localhost', port=8080)
Esto debería tratar funciona como está previsto
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)
es fácil de conseguir utilizando JSON petición módulo de botella
from bottle import request
json_data = request.json # json_data is in the dictionary format