Question
Comment puis-je de retourner des données JSON à partir d'un gestionnaire de requêtes de la bouteille. Je vois une méthode de dict2json dans la bouteille, mais src Je ne sais pas comment l'utiliser.
Qu'est-ce que dans la documentation:
@route('/spam')
def spam():
return {'status':'online', 'servertime':time.time()}
me donne quand je afficher la page:
<html>
<head></head>
<body>statusservertime</body>
</html>
La solution
Il suffit de retourner un dict. poignées de bouteille la conversion à JSON pour vous.
dictionnaires sont autorisés même. Ils sont convertis en JSON et sont revenus avec en-tête Content-Type ensemble à l'application / JSON. Pour désactiver cette fonction (et passer dicts à votre middleware) vous pouvez définir bottle.default_app (). Autojson False.
@route('/api/status')
def api_status():
return {'status':'online', 'servertime':time.time()}
http://bottlepy.org/docs/stable/api. html # la bouteille classe
Autres conseils
Pour une raison quelconque, la fonction auto-JSON de bouteille ne fonctionne pas pour moi. Si cela ne fonctionne pas pour vous non plus, vous pouvez utiliser ce décorateur:
def json_result(f):
def g(*a, **k):
return json.dumps(f(*a, **k))
return g
Aussi pratique:
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()}
fonctionne parfaitement bien pour moi. Avez-vous importé time
?
Cela fonctionne:
import time
from bottle import route, run
@route('/')
def index():
return {'status':'online', 'servertime':time.time()}
run(host='localhost', port=8080)
essayer cela devrait fonctionne comme prévu
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)
il est facile d'obtenir JSON en utilisant le module de demande de bouteille
from bottle import request
json_data = request.json # json_data is in the dictionary format