Rumah > pembangunan bahagian belakang > Tutorial Python > 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)

王林
Lepaskan: 2023-06-17 10:39:35
asal
1736 orang telah melayarinya

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.

  1. Gunakan Keizinan dan Pengesahan

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()
Salin selepas log masuk

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.

  1. Melaksanakan kawalan versi

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()
Salin selepas log masuk

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.

  1. Menggunakan sambungan lain

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:

  • Flask-CORS: Selesaikan masalah akses merentas domain aplikasi.
  • Flask-Bcrypt: Menyediakan fungsi pencincangan kata laluan bcrypt untuk menyulitkan kata laluan.
  • Flask-Migrate: Menyediakan pemindahan data dan fungsi peningkatan pangkalan data.
  • Flask-Login: Menyediakan fungsi log masuk pengguna.

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!

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