Rumah > Artikel > pembangunan bahagian belakang > Flask-RESTful dan Swagger: Amalan terbaik untuk membina API RESTful dalam aplikasi web Python (Bahagian 2)
Flask-RESTful dan Swagger: Amalan terbaik untuk membina API RESTful dalam aplikasi web Python (Bahagian 2)
Dalam artikel sebelumnya, kami meneroka cara menggunakan Flask-RESTful dan Swagger kepada amalan Terbaik untuk membina RESTful API. Kami memperkenalkan asas rangka kerja Flask-RESTful dan menunjukkan cara menggunakan Swagger untuk membina dokumentasi untuk API RESTful. Artikel ini terus menyelidiki topik ini dan memperkenalkan teknik dan amalan yang lebih maju.
RESTful API harus selamat, memastikan hanya pengguna yang diberi kuasa boleh mengaksesnya. Untuk mencapai ini kita perlu menggunakan Kebenaran dan Pengesahan. Keizinan ialah proses menentukan sama ada pengguna dibenarkan mengakses sumber. Pengesahan ialah proses mengesahkan identiti pengguna.
Flask-RESTful menyediakan sambungan yang sangat berguna, Flask-JWT. Flask-JWT boleh membantu kami melaksanakan pengurusan pengesahan dan kebenaran berasaskan token. Di sini kami memperkenalkan secara ringkas cara menggunakan Flask-JWT untuk melaksanakan pengesahan token.
from flask import Flask from flask_jwt import JWT, jwt_required, current_identity from werkzeug.security import safe_str_cmp app = Flask(__name__) app.config['SECRET_KEY'] = 'super-secret' class User: def __init__(self, id, username, password): self.id = id self.username = username self.password = password def __str__(self): return "User(id='%s')" % self.id users = [ User(1, 'john', 'pass'), User(2, 'susan', 'pass'), ] username_table = {u.username: u for u in users} userid_table = {u.id: u for u in users} def authenticate(username, password): user = username_table.get(username, None) if user and safe_str_cmp(user.password.encode('utf-8'), password.encode('utf-8')): return user def identity(payload): user_id = payload['identity'] return userid_table.get(user_id, None) jwt = JWT(app, authenticate, identity) @app.route('/protected') @jwt_required() def protected(): return '%s' % current_identity if __name__ == '__main__': app.run()
Dalam kod di atas, kami mencipta objek JWT yang disambungkan ke aplikasi Flask. Objek JWT menggunakan SECRET_KEY apl Flask untuk menyulitkan dan menyahsulit token. Kami juga mentakrifkan kelas pengguna, dan maklumat pengguna disimpan dalam senarai pengguna.
Apabila mentakrifkan fungsi pengesahan authenitcate, kami menyemak sama ada nama pengguna wujud dan membawa maklumat kata laluan. Jika pengesahan kata laluan lulus, fungsi mengembalikan objek pengguna. Apabila mentakrifkan identiti fungsi identiti, kami mengembalikan objek pengguna yang disahkan.
Di bawah penghias @app.route('/protected'), penghias @jwt_required() digunakan untuk melindungi titik akhir ini, memastikan hanya pengguna yang disahkan dan dibenarkan sahaja boleh mengaksesnya.
Kawalan versi ialah konsep yang sangat penting kerana ia menjadikan interaksi antara klien dan pelayan stabil dan serasi ke belakang. API harus mengekalkan keserasian antara pelanggan dan pelayan sebanyak mungkin, terutamanya apabila terdapat perubahan besar pada API. Untuk mencapai kawalan versi, kami perlu memperkenalkan nombor versi dalam API.
Berikut ialah amalan versi yang baik:
from flask import Flask from flask_restful import Resource, Api app = Flask(__name__) api = Api(app) version = 'v1' class HelloWorld(Resource): def get(self): return {'version': version, 'message': 'Hello World'} api.add_resource(HelloWorld, f'/{version}/') if __name__ == '__main__': app.run()
Dalam kod di atas, kami mentakrifkan pembolehubah versi untuk menentukan versi API dan kemudian menggunakannya dalam @app.route decorator f -{version}-String untuk menambah nombor versi. Ini membolehkan kawalan versi dan keserasian antara muka yang lebih baik antara klien dan pelayan.
Flask-RESTful menyediakan banyak pemalam kebolehlanjutan yang boleh membantu anda membina API RESTful dengan lebih pantas dan lebih mudah. Berikut ialah beberapa sambungan yang biasa digunakan:
Pelanjutan ini membantu anda membina API RESTful dengan lebih cekap.
Ringkasan
Artikel ini menyelami amalan terbaik cara menggunakan Flask-RESTful dan Swagger untuk membina API RESTful. Kami memperkenalkan cara menggunakan Kebenaran dan Pengesahan untuk memastikan keselamatan API dan cara melaksanakan kawalan versi. Pada masa yang sama, untuk membina API dengan lebih baik, kami juga memperkenalkan beberapa sambungan Flask yang biasa digunakan. Amalan ini akan membantu anda membina API RESTful dengan lebih cepat dan menjadikan interaksi antara klien dan pelayan lebih stabil dan serasi ke belakang.
Atas ialah kandungan terperinci Flask-RESTful dan Swagger: Amalan terbaik untuk membina API RESTful dalam aplikasi web Python (Bahagian 2). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!