Вопрос

Как я могу вернуть данные 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()}

Взято из документация.

http://bottlepy.org/docs/stable/api.html#the-bottle-class

Другие советы

По какой-то причине, функция 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top