Вопрос
Как я могу вернуть данные JSON из обработчика запроса на бутылку. Я вижу метод DICT2JSON в бутылке SRC, но я не уверен, как его использовать.
Что в документации:
@route('/spam')
def spam():
return {'status':'online', 'servertime':time.time()}
Дает мне это, когда я поднимаю страницу:
<html>
<head></head>
<body>statusservertime</body>
</html>
Решение
Просто верните дикт. Бутылка обрабатывает обращение в JSON для вас.
Даже словари разрешены. Они преобразуются в JSON и возвращаются с заголовком типа контента в Application/JSON. Чтобы отключить эту функцию (и передавать DICTS в ваше промежуточное программное обеспечение) вы можете установить Bottle.default_app (). Autojson в False.
@route('/api/status')
def api_status():
return {'status':'online', 'servertime':time.time()}
Взято из документация.
Другие советы
По какой-то причине, функция Auto-Json's Bottle не работает для меня. Если это тоже не работает для вас, вы можете использовать этот декоратор:
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
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)
Попробуйте это работать, как задумано
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)
легко получить JSON с помощью модуля запроса бутылки
from bottle import request
json_data = request.json # json_data is in the dictionary format