Clădire API-uri rapide cu flacără ORM Independent

În prima parte a acestei serii de tutorial din trei părți, am văzut cum să scriem API-uri RESTful de către noi înșine folosind Balonul ca cadru web. În cea de-a doua parte, am creat un API RESTful folosind Flask-Restless, care depinde de SQLAlchemy ca ORM. În această parte, vom folosi o altă extensie Flask-Restful, care abstractează ORM-ul tău și nu face nici o presupunere despre el. 

Voi face aceeași aplicație ca în ultima parte a acestei serii pentru a menține contextul și continuitatea. Deși această aplicație de exemplu se bazează pe SQLAlchemy în sine, această extensie poate fi utilizată împreună cu ORM în mod similar, așa cum se arată în acest tutorial.

Instalarea dependențelor

În timp ce continuăm cu aplicația din prima parte, trebuie să instalăm o singură dependență:

$ pip instalați Flask-Restful

Aplicația

Înainte de a începe, este posibil să doriți să eliminați codul pe care l-am scris pentru a doua parte a acestei serii de tutorial pentru mai multă claritate.

Ca întotdeauna, vom începe cu modificările aduse configurației aplicației noastre, care va arăta cam ca următoarele rânduri de cod: 

flask_app / my_app / __ init__.py

din flask.ext.restful import Api api = Api (app)

Este suficient să adaugi doar codul existent de mai sus.

flask_app / my_app / Catalog / views.py

importați json din importul de sticlă Blueprint, renunțați la importul flask.ext.restful Resursă din importul flask.ext.restful import din importul my_app.catalog.models Produs de la my_app import api, db catalog = Blueprint ('catalog', __name__) parser = parser.add_argument ('nume', tip = str) parser.add_argument ('preț', tip = float) @ catalog.route ('/' (): întoarceți-vă "Bine ați venit la Catalogul de acasă." Clasa ProductApi (Resource): def get (auto, id = Niciuna, pagina = 1): dacă nu id: products = Product.query.paginate (page, 10) .items else: products = [Product.query.get )] dacă nu produse: abort (404) res =  pentru produsul în produse: res [product.id] = name ': product.name,' price ': product.price, return json.dumps ) def post (auto): args = parser.parse_args () nume = args ['name'] price = args ['price'] product = db.session.add (product) db.session. comanda () res =  res [product.id] = 'nume': product.name, 'price': product.price, return json.dumps (res) api.add_resource ',' / api / product /',' / api / product //')

Majoritatea codului de mai sus este explicativă. Voi sublinia însă câteva puncte. Codul de mai sus pare foarte asemănător celui pe care l-am scris în prima parte a acestei serii, dar aici extensia folosită face o grămadă de optimizări în spatele scenei și oferă mult mai multe caracteristici care pot fi folosite. 

Aici sunt metodele declarate în orice clasă subclase Resursă sunt considerate automat pentru rutare. De asemenea, toți parametrii pe care le așteptăm să le primim împreună cu apelurile HTTP primite trebuie să fie analizate folosind reqparse.

Testarea aplicației

Această aplicație poate fi testată exact așa cum am făcut-o în a doua parte a acestei serii tutorial. Am pastrat URL-ul de rutare acelasi in acelasi scop.

Concluzie

În această ultimă parte a acestei serii de tutorial în trei părți privind dezvoltarea API-urilor RESTful cu Flask, am văzut cum să scriem API RESTful independente de ORM. Acest lucru împachetează principiile de scriere a API-urilor RESTful cu flacără în diferite moduri. 

Există mai multe lucruri despre care se poate învăța despre fiecare dintre metodele acoperite și puteți explora acest lucru pe cont propriu, utilizând noțiunile de bază pe care le-ați învățat în această serie.

Cod