Бутылка и Джсон
Как мне возвращать данные json из обработчика запросов на бутылку. Я вижу метод dict2json в бутылке src, но я не уверен, как его использовать.
Что находится в документации:
@route('/spam')
def spam():
return {'status':'online', 'servertime':time.time()}
Дает мне это, когда я поднимаю страницу:
<html>
<head></head>
<body>statusservertime</body>
</html>
Ответы
Ответ 1
Просто верните dict. Бутылка обрабатывает преобразование в JSON для вас.
Разрешены даже словари. Они преобразуются в json и возвращаются с заголовком Content-Type, установленным в application/json. Чтобы отключить эту функцию (и передать dicts вашему промежуточному программному обеспечению), вы можете установить bottle.default_app(). Autojson to False.
@route('/api/status')
def api_status():
return {'status':'online', 'servertime':time.time()}
Взято из документация.
http://bottlepy.org/docs/stable/api.html#the-bottle-class
Ответ 2
По какой-то причине функция авто-json для бутылок не работает для меня. Если это не сработает для вас, вы можете использовать этот декоратор:
def json_result(f):
def g(*a, **k):
return json.dumps(f(*a, **k))
return g
Также удобно:
def mime(mime_type):
def decorator(f):
def g(*a, **k):
response.content_type = mime_type
return f(*a, **k)
return g
return decorator
Ответ 3
return {'status':'online', 'servertime':time.time()}
отлично работает для меня. Вы импортировали time
?
Это работает:
import time
from bottle import route, run
@route('/')
def index():
return {'status':'online', 'servertime':time.time()}
run(host='localhost', port=8080)
Ответ 4
попробуйте, это должно работать как предполагалось
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)
Ответ 5
легко получить json, используя модуль запроса на бутылку
from bottle import request
json_data = request.json # json_data is in the dictionary format