Domanda
Come faccio a andare sulla restituzione di dati JSON da un gestore di richiesta di bottiglia. Vedo un metodo dict2json nel src bottiglia, ma non sono sicuro come usarlo.
Ciò che è nella documentazione:
@route('/spam')
def spam():
return {'status':'online', 'servertime':time.time()}
mi dà questo quando porto la pagina:
<html>
<head></head>
<body>statusservertime</body>
</html>
Soluzione
È sufficiente restituire un dict. maniglie bottiglia la conversione a JSON per voi.
Anche i dizionari sono ammessi. Essi vengono convertiti in JSON e restituiti con Content-Type intestazione set per application / json. Per disattivare questa funzione (e passa dicts al middleware) è possibile impostare bottle.default_app (). Autojson False.
@route('/api/status')
def api_status():
return {'status':'online', 'servertime':time.time()}
http://bottlepy.org/docs/stable/api. html # the-bottiglia classe
Altri suggerimenti
Per qualche ragione, funzione di auto-JSON di bottiglia non funziona per me. Se non funziona neanche per te, è possibile utilizzare questo decoratore:
def json_result(f):
def g(*a, **k):
return json.dumps(f(*a, **k))
return g
Anche a portata di mano:
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()}
funziona perfettamente bene per me. Avete importato time
?
Questo funziona:
import time
from bottle import route, run
@route('/')
def index():
return {'status':'online', 'servertime':time.time()}
run(host='localhost', port=8080)
provare questo dovrebbe funziona come 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)
è facile da ottenere JSON utilizzando il modulo di richiesta di bottiglia
from bottle import request
json_data = request.json # json_data is in the dictionary format