Domanda

Come faccio a andare sulla restituzione di dati JSON da un gestore di richiesta di bottiglia. Vedo un metodo dict2json nel src bottiglia, ma non sono sicuro come usarlo.

Ciò che è nella documentazione:

@route('/spam')
def spam():
    return {'status':'online', 'servertime':time.time()}

mi dà questo quando porto la pagina:

<html>
    <head></head>
    <body>statusservertime</body>
</html>
È stato utile?

Soluzione

È sufficiente restituire un dict. maniglie bottiglia la conversione a JSON per voi.

  

Anche i dizionari sono ammessi. Essi vengono convertiti in JSON e restituiti con Content-Type intestazione set per application / json. Per disattivare questa funzione (e passa dicts al middleware) è possibile impostare bottle.default_app (). Autojson False.

@route('/api/status')
def api_status():
    return {'status':'online', 'servertime':time.time()}

documentazione.

http://bottlepy.org/docs/stable/api. html # the-bottiglia classe

Altri suggerimenti

Per qualche ragione, funzione di auto-JSON di bottiglia non funziona per me. Se non funziona neanche per te, è possibile utilizzare questo decoratore:

def json_result(f):
    def g(*a, **k):
        return json.dumps(f(*a, **k))
    return g

Anche a portata di mano:

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()} funziona perfettamente bene per me. Avete importato time?

Questo funziona:

import time
from bottle import route, run

@route('/')
def index():
    return {'status':'online', 'servertime':time.time()}

run(host='localhost', port=8080)

provare questo dovrebbe funziona come previsto

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)

è facile da ottenere JSON utilizzando il modulo di richiesta di bottiglia

from bottle import request

json_data = request.json # json_data is in the dictionary format
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top