Frage
Wie gehe ich über die JSON-Daten aus einer Flasche Request-Handler zurück. Ich sehe eine dict2json Methode in der Flasche src aber ich bin nicht sicher, wie es zu benutzen.
Was in der Dokumentation ist:
@route('/spam')
def spam():
return {'status':'online', 'servertime':time.time()}
Gibt mir das, wenn ich die Seite bringen:
<html>
<head></head>
<body>statusservertime</body>
</html>
Lösung
Bringen Sie einfach einen dict. Bottle Griffe die Umwandlung in JSON für Sie.
Auch Wörterbücher sind erlaubt. Sie werden zu json umgewandelt und mit Content-Type-Header-Set application / json zurückgegeben. Um diese Funktion zu deaktivieren (und übergeben dicts zu Ihrer Middleware) Sie bottle.default_app () einstellen. Autojson auf False fest.
@route('/api/status')
def api_status():
return {'status':'online', 'servertime':time.time()}
Genommen von der Dokumentation.
http://bottlepy.org/docs/stable/api. html # the-bottle-Klasse
Andere Tipps
Aus irgendeinem Grund Flaschen Auto-json-Funktion funktioniert nicht für mich arbeiten. Wenn es auch nicht Arbeit für Sie, können Sie diesen Dekorateur verwenden:
def json_result(f):
def g(*a, **k):
return json.dumps(f(*a, **k))
return g
Auch praktisch:
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()}
funktioniert sehr gut für mich. Haben Sie importierte time
?
Das funktioniert:
import time
from bottle import route, run
@route('/')
def index():
return {'status':'online', 'servertime':time.time()}
run(host='localhost', port=8080)
versuchen sollte dies funktioniert wie beabsichtigt
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)
ist es einfach, Flasche Wunsch Modul zu bekommen json mit
from bottle import request
json_data = request.json # json_data is in the dictionary format