簡體   English   中英

Flask-RESTful API不會以json格式返回字典

[英]Flask-RESTful API does not return a dictionary as a json format

我正在使用燒瓶式API。 當我將debug=True更改為debug=False我沒有收到json格式的數據。 這是示例代碼:

from flask import Flask, jsonify, Response
from flask_restful import Resource, Api
import json

app = Flask(__name__)

# Create the API
api = Api(app)

@app.route('/')
def index():
    return "HELLO WORLD"


class tests(Resource):

    def get(self):
        #return json.dumps({"A":1, "B":2}, sort_keys=False, indent=4)
        return jsonify({"A":1, "B":2}) 

api.add_resource(tests, '/<string:identifier>')

if __name__ == '__main__':
    app.run(debug=False)

使用json.dumps(dictionary)返回:

"{\\n \\"A\\": 1,\\n \\"B\\": 2\\n}"

但我期望:

{
  "A": 1,
  "B": 2
 }

定義的資源是造成問題的原因,因為它要求您將“自我”傳遞給內部函數。 將類定義為對象而不是資源將避免這種情況,同時仍允許您將參數傳遞給函數,例如id,如get_tests_id()所示。

from flask import Flask, json
from flask_restful import Api

app = Flask(__name__)

# Create the API
api = Api(app)


@app.route('/')
def index():
    return "HELLO WORLD"


class Tests(object):

    # function to get all tests
    @app.route('/tests', methods=["GET"])
    def get_tests():
        data = {"A": 1, "B": 2}
        return json.dumps(data, sort_keys=False, indent=4), 200

    # function to get tests for the specified id("A" or "B" in this case) 
    @app.route('/tests/<id>', methods=["GET"])
    def get_tests_id(id):
        data = {"A": 1, "B": 2}
        return json.dumps({id: data.get(id)}, sort_keys=False, indent=4), 200


if __name__ == '__main__':
    app.run(debug=False)

假設您正在端口5000上運行API並從主機對其進行測試,則可以使用以下URL從Web瀏覽器訪問數據:

'localhost:5000 / tests'-獲取所有測試的URL

'localhost:5000 / tests / A'-用於獲取ID =“ A”的測試的URL

'localhost:5000 / tests / B'-用於獲取ID =“ B”的測試的URL

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM