سؤال

كيف يمكنني إرجاع بيانات JSON من معالج طلب الزجاجة. أرى طريقة DICT2JSON في زجاجة SRC ولكني لست متأكدًا من كيفية استخدامها.

ما هو في الوثائق:

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

يعطيني هذا عندما أحضر الصفحة:

<html>
    <head></head>
    <body>statusservertime</body>
</html>
هل كانت مفيدة؟

المحلول

ما عليك سوى إرجاع القولون. تعالج الزجاجة التحويل إلى JSON لك.

حتى القواميس مسموح بها. يتم تحويلها إلى JSON وإعادتها برأس من نوع المحتوى المُعين على Application/JSON. لتعطيل هذه الميزة (وتمرير الرسائل إلى الوسيطة الخاصة بك) ، يمكنك تعيين 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

نصائح أخرى

لسبب ما ، لا تعمل ميزة Bottle's Auto-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

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