Rumah > pembangunan bahagian belakang > Tutorial Python > Flask-Restless dan Flask-SQLAlchemy: Amalan terbaik untuk membina API RESTful dalam aplikasi web Python

Flask-Restless dan Flask-SQLAlchemy: Amalan terbaik untuk membina API RESTful dalam aplikasi web Python

WBOY
Lepaskan: 2023-06-17 19:55:35
asal
882 orang telah melayarinya

Dalam pembangunan aplikasi web Python, membina RESTful API ialah topik yang tidak dapat dielakkan. API RESTful telah menjadi standard untuk pembangunan aplikasi web moden kerana ia membolehkan antara muka API yang ringan, berskala dan mudah diselenggara melalui protokol HTTP. Terdapat dua perpustakaan Python yang patut disebut: Flask-Restless dan Flask-SQLAlchemy. Mari terokai amalan terbaik tentang cara menggunakannya untuk membina API RESTful.

Flask-Restless ialah perpustakaan Python berkuasa yang direka untuk memudahkan pembangunan API RESTful. Ia menggunakan fungsi penghalaan dan pemprosesan permintaan yang disediakan oleh rangka kerja Flask, dan juga menyepadukan SQLAlchemy untuk mengendalikan operasi pangkalan data. Flask-SQLAlchemy ialah lanjutan untuk operasi pangkalan data dalam aplikasi Flask. Ia juga menyediakan fungsi ORM yang berkuasa untuk memudahkan penulisan kod.

Pertama, kita perlu menentukan model data yang akan dipaparkan. Sebagai contoh, pertimbangkan aplikasi blog mudah yang perlu melaksanakan API untuk siaran, ulasan dan pengguna. Kita boleh mentakrifkan model data berikut:

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

class Post(db.Model):
    __tablename__ = 'posts'
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100))
    body = db.Column(db.Text)
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
    comments = db.relationship('Comment', backref='post', lazy='dynamic')

class Comment(db.Model):
    __tablename__ = 'comments'
    id = db.Column(db.Integer, primary_key=True)
    body = db.Column(db.String(140))
    post_id = db.Column(db.Integer, db.ForeignKey('posts.id'))
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
    
class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(50), unique=True)
    email = db.Column(db.String(120), unique=True)
    posts = db.relationship('Post', backref='user', lazy='dynamic')
    comments = db.relationship('Comment', backref='user', lazy='dynamic')
Salin selepas log masuk

Kemudian, kita boleh menggunakan Flask-Restless untuk mencipta API RESTful. Flask-Restless menyediakan cara yang cepat dan mudah untuk mencipta API. Untuk mencipta API, kita perlu melakukan langkah berikut:

1 Cipta aplikasi kelalang dan konfigurasikan pangkalan data.

from flask import Flask
from flask_restless import APIManager
from app.models import db, Post, Comment, User

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///blog.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['JSON_SORT_KEYS'] = False

db.init_app(app)
Salin selepas log masuk

2. Buat pengurus API dan titik akhir API.

api_manager = APIManager(app, flask_sqlalchemy_db=db)

api_manager.create_api(Post, methods=['GET', 'POST', 'PUT', 'DELETE'])
api_manager.create_api(Comment, methods=['GET', 'POST', 'PUT', 'DELETE'])
api_manager.create_api(User, methods=['GET', 'POST', 'PUT', 'DELETE'])
Salin selepas log masuk

3. Mulakan aplikasi Flask.

if __name__ == '__main__':
    app.run(debug=True)
Salin selepas log masuk

Kini, kami telah mencipta API RESTful asas yang membolehkan kami melaksanakan operasi CRUD pada siaran, ulasan dan pengguna melalui kaedah HTTP GET, POST, PUT dan DELETE. Tetapi ini hanyalah contoh asas. Kami juga perlu melaksanakan beberapa fungsi tambahan seperti penapisan, pengisihan dan halaman.

Flask-Restless menyediakan satu set parameter untuk menapis data. Sebagai contoh, kita boleh menggunakan parameter "q" untuk menentukan keadaan carian, parameter "halaman" untuk halaman, parameter "isih" untuk mengisih, dsb.

GET /api/posts?q={"filters":[{"name":"title","op":"like","val":"Flask"}]}&sort=-id&page=1
Salin selepas log masuk

Permintaan GET di atas akan mengisih catatan blog dalam susunan terbalik mengikut id selepas dikembalikan, dan hanya mengembalikan halaman pertama dalam senarai catatan blog yang mengandungi "Flask" dalam tajuk (tidak sensitif huruf besar-besaran).

Selain itu, Flask-Restless juga menyokong parameter "include_columns" untuk memilih lajur untuk dikembalikan berdasarkan keperluan dan parameter "exclude_columns" untuk mengecualikan lajur yang tidak diperlukan. Sebagai contoh, permintaan GET berikut akan mengembalikan senarai yang mengandungi id artikel, tajuk dan maklumat pengarang, tetapi tiada maklumat badan.

GET /api/posts?include_columns=id,title,user&exclude_columns=body
Salin selepas log masuk

Flask-SQLAlchemy juga menyediakan beberapa alat penapis pertanyaan yang berguna, seperti equal_to, like, ilike, dsb. Alat ini boleh digunakan untuk membuat pertanyaan yang lebih kompleks.

users = User.query.filter(User.username.ilike('%john%'))
Salin selepas log masuk

Dalam contoh ini, pertanyaan akan sepadan dengan semua pengguna yang nama penggunanya mengandungi "john".

Untuk meringkaskan, Flask-Restless dan Flask-SQLAlchemy ialah dua perpustakaan Python yang berkuasa untuk mencipta API RESTful. Dengan menggunakannya secara gabungan, kami boleh dengan cepat dan ringkas membangunkan aplikasi API yang mudah diselenggara dan dilanjutkan. Dalam amalan, kita perlu memilih ciri yang terbaik untuk aplikasi kita berdasarkan keperluan sebenar. Tetapi ciri yang dinyatakan di sini ialah amalan terbaik untuk membina API RESTful.

Atas ialah kandungan terperinci Flask-Restless dan Flask-SQLAlchemy: Amalan terbaik untuk membina API RESTful dalam aplikasi web Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan