Определенный ресурс является причиной вашей проблемы, поскольку он требует, чтобы вы передавали "self" внутренним функциям.Определение класса как объекта вместо ресурса позволит обойти это, в то же время позволяя передавать аргументы функции, такие как 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)
Предполагается, что вы используете APIна порту 5000 и тестировании его с хоста, следующие URL-адреса могут использоваться для доступа к вашим данным из веб-браузера:
'localhost: 5000 / tests' - URL-адрес для получения всех тестов
'localhost: 5000 / tests / A' - URL-адрес для получения тестов с id = "A"
'localhost: 5000 / tests / B' - URL-адрес для получения тестов с id = "B"