web-dev-qa-db-ja.com

ボトルとJson

ボトルリクエストハンドラーからjsonデータを返すにはどうすればよいですか。ボトルsrcにdict2jsonメソッドがありますが、使用方法がわかりません。

ドキュメントの内容:

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

ページを表示すると、次のように表示されます。

<html>
    <head></head>
    <body>statusservertime</body>
</html>
26
arinte

単にdictを返します。ボトルがJSONへの変換を処理します。

辞書も許可されます。それらはjsonに変換され、Content-Typeヘッダーがapplication/jsonに設定されて返されます。この機能を無効にする(そしてミドルウェアにdictを渡す)には、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

43
Andrew

何らかの理由で、ボトルの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
6
David M.

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)
3
Tim McNamara

ボトルのリクエストモジュールを使用してjsonを取得するのは簡単です

from bottle import request

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

これは意図したとおりに機能するはずです

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
Darshan J