Middleware dalam kerangka web seperti Flask dan Django adalah komponen penting yang bertindak sebagai jambatan antara pelayan dan kitaran permintaan/tindak balas. Dalam kedua -dua rangka kerja, middleware adalah satu siri cangkuk ke dalam pemprosesan permintaan/tindak balas permohonan anda. Cangkuk ini dipanggil sebelum dan selepas setiap permintaan, yang membolehkan pengubahsuaian atau penambahan kepada pengendalian permintaan dan tindak balas.
Di Django, middleware biasanya dilaksanakan sebagai kelas dengan kaedah tertentu yang dicetuskan pada tahap yang berlainan dalam kitaran permintaan/tindak balas. Kaedah ini termasuk process_request
, process_view
, process_template_response
, process_response
, dan process_exception
, masing -masing melayani tujuan yang berbeza dalam memproses permintaan atau tindak balas.
Dalam flask, fungsi middleware dapat dicapai melalui penggunaan penghias atau dengan memperluaskan objek aplikasi Flask
. Flask tidak mempunyai konsep middleware terbina dalam seperti Django, tetapi fungsi yang sama dapat dicapai dengan menggunakan kaedah seperti before_request
, after_request
, dan cangkuk lain yang disediakan oleh kelas Flask
.
Middleware meningkatkan fungsi flask dan aplikasi Django dalam beberapa cara yang penting:
Untuk melaksanakan middleware tersuai di Django, ikuti langkah -langkah ini:
Buat kelas middleware : Tentukan kelas dengan kaedah yang sesuai dengan mata dalam kitaran permintaan/tindak balas di mana anda ingin campur tangan. Kaedah yang paling biasa digunakan ialah process_request
dan process_response
.
<code class="python">class CustomMiddleware: def __init__(self, get_response): self.get_response = get_response # One-time configuration and initialization. def __call__(self, request): # Code to be executed for each request before # the view (and later middleware) are called. response = self.get_response(request) # Code to be executed for each request/response after # the view is called. return response def process_request(self, request): # Modify the request object if needed. pass def process_response(self, request, response): # Modify the response object if needed. return response</code>
Tambah middleware ke tetapan : Sertakan middleware anda dalam tetapan MIDDLEWARE
dalam fail settings.py
projek Django anda.
<code class="python">MIDDLEWARE = [ # Other middleware... 'path.to.your.CustomMiddleware', ]</code>
Dalam Flask, sementara tidak ada konsep middleware formal, fungsi yang serupa dapat dicapai dengan menggunakan penghias dan cangkuk:
Menggunakan penghias : Anda boleh menggunakan flask's before_request
dan after_request
penghias untuk mencapai tingkah laku seperti middleware.
<code class="python">from flask import Flask, request, g app = Flask(__name__) @app.before_request def before_request(): g.start_time = time.time() @app.after_request def after_request(response): duration = time.time() - g.start_time response.headers['X-Request-Duration'] = str(duration) return response</code>
Memperluas Flask : Anda juga boleh memperluaskan objek aplikasi Flask untuk menambah tingkah laku tersuai ke kitaran permintaan/tindak balas.
<code class="python">class CustomFlask(Flask): def __init__(self, *args, **kwargs): super(CustomFlask, self).__init__(*args, **kwargs) self.before_request(self.before_request_callback) self.after_request(self.after_request_callback) def before_request_callback(self): # Custom logic before each request pass def after_request_callback(self, response): # Custom logic after each request return response app = CustomFlask(__name__)</code>
Middleware dalam Flask dan Django digunakan untuk pelbagai tujuan, beberapa yang paling biasa termasuk:
Kes -kes penggunaan ini menunjukkan kepelbagaian dan kepentingan middleware dalam meningkatkan fungsi, keselamatan, dan prestasi aplikasi Flask dan Django.
Atas ialah kandungan terperinci Apakah middleware dalam flask (atau django)?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!