Soru Şişe ve json


Bir şişe isteği işleyicisinden json verilerini döndürme hakkında nasıl giderim. Şişe src'de bir dict2json yöntemi görüyorum ama nasıl kullanacağımı bilmiyorum.

Dokümanlarda neler var?

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

Sayfayı açtığımda bunu bana verir:

<html>
    <head></head>
    <body>statusservertime</body>
</html>

25
2017-08-17 20:33


Menşei


Şişeye geçtim ve gayet iyi çalışıyor. - arinte
Ayrıca ithalat jsonunu sonra json.dumps (dict) kullanabilirsiniz. Ama iyi bir hamle, ayrıca şişe ve şişe arasında gidip, biberon seçiyorum. Şişenin hafif olmasını ve arkasındaki daha büyük bir çerçeveye sahip olmamayı seviyorum. Ama yazılan url params gibi şeyler her zaman, tarih algılama veya indeksler gibi şeyler yapmak için bana geri kazanırsınız / blog / <int: day> / <int: month> / <int: year> / <yol: yol> / Nerede sadece şişe var : param isimleri. Dolayısıyla, 4 eğik çizgi içeren bir yol her zaman bir tarih / blog türü URL'si değildir. Ben her ikisini de kullanıyorum ama şu anda böyle şeyler nedeniyle büyük uygulamalar için flask eğilimindedir. - Ryan Christensen
Benim de bu problemim var. Curl -I kullanırken, içerik türünün yanlış olduğunu görüyorum: Content-Type: text / html; karakter kümesi = UTF-8 - Sridhar-Sarnobat


Cevaplar:


Sadece bir dict döndürün. Şişe sizin için JSON'a dönüştürmeyi gerçekleştirir.

Sözlüklere bile izin verilir. Bunlar json'a dönüştürülür ve application / json olarak ayarlanan Content-Type üstbilgisiyle döndürülür. Bu özelliği devre dışı bırakmak için (ve komut dosyalarını ara yazılımınıza aktarın) bottle.default_app (). Autojson öğesini False olarak ayarlayabilirsiniz.

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

Dan alınan Dökümantasyon.

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


44
2017-08-17 20:39



Bu aslında soruyu cevaplamıyor - Henry Finucane
Ne? Kesinlikle ... - Adrian Petrescu


Nedense, şişenin oto-json özelliği benim için çalışmıyor. Sizin için de işe yaramıyorsa, bu dekoratörü kullanabilirsiniz:

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

Ayrıca kullanışlı:

def mime(mime_type):
    def decorator(f):
        def g(*a, **k):
            response.content_type = mime_type
            return f(*a, **k)
        return g
    return decorator

6
2017-09-17 00:20



Bu, Şişe tarafından ele alınmayan sözlük dizileri döndürmek için harika çalıştı - Martín Coll
Sözlüklerin bir listesini iade etmemelisiniz, bu yüzden şişe bu kadar zorlaştırır (ve Flask da). Buraya bakın: flask.pocoo.org/docs/security/#json-security - Martin Konecny
Vay, bunu işaret ettiğin için teşekkürler. - David M.
Sözlüklerin listelenmesi artık iyi. flask.pocoo.org/docs/security/#json-security - Prof. Falken


return {'status':'online', 'servertime':time.time()} benim için gayet iyi çalışıyor. İthal ettin mi time?

Bu çalışıyor:

import time
from bottle import route, run

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

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

3
2017-09-17 00:16



Bu benim için çalışmadı. İthalat zamanı yaptım. Sanırım sürümle ilgili bir davranış değişikliği. - Sridhar-Sarnobat


deneyin bu amaçlanan şekilde çalışmalıdır

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)

0
2018-04-28 08:09





şişenin istek modülünü kullanarak json almak kolaydır

from bottle import request

json_data = request.json # json_data is in the dictionary format

0
2017-08-01 00:23