Flask-RESTful - это расширение Flask, которое само по себе построено на многих из замечательных утилит, предоставляемых Werkzeug.
from flask import Flask
app = Flask(__name__)
@app.route('/foo')
def say_foo():
return 'foo'
@app.route('/bar')
def say_bar():
return 'bar'
if __name__ == '__main__':
app.run()
Одна из главных идей REST - использование HTTP для взаимодействия с ресурсами. Проблема этого кода в том, что наш ресурс разделен на несколько методов. Там нет инкапсуляции. Хотя сам API включает в себя основные элементы REST, код полностью не в состоянии охватить эти идеи. Это плохо! Нет причин, по которым наш внутренний код не должен соответствовать внешнему виду нашего API.
Использование Flask-RESTful
from flask import Flask
from flask_restful import Resource, Api
app = Flask(__name__)
api = Api(app)
class Foo(Resource):
def get(self):
return 'foo'
class Bar(Resource)
def get(self):
return 'bar'
# As you might have guessed, these two lines add a given resource to our API at the
# specified route. We no longer need to enumerate what methods a route supports,
# since Flask-RESTful resolves this information by inspecting what methods you've
# defined on your resource object.
api.add_resource(Foo, '/foo')
api.add_resource(Bar, '/bar')
if __name__ == '__main__':
app.run()
У нас сейчас классы! Это огромная сделка. Наши маршруты теперь отображаются непосредственно на объекты. Более того, методы данного класса точно такие же, как их HTTP-аналоги. Нам больше не нужно иметь дело с методами именования на наших маршрутах, таких как say_foo
, так как между нашими методами HTTP и методами в наших классах есть соотношение 1: 1.
читать больше: https://dougblack.io/words/flask-restful-101.html