Sebelum kita membahas bagaimana cara membuat Middleware pada django framework ada baiknya kita memahami terlebih dahulu apa itu Middleware ?

Apa Itu Middleware ?

 

Middleware khususnya di dunia web programming adalah suatu software layer yang berada di antara router dengan controller. Karena posisi dari middleware berada di antara router dengan controller. Middleware pada aplikasi web biasanya digunakan pada bebrapa event diantaranya :

  1. Authentication
  2. Authorization
  3. Validasi input
  4. Sanitasi input
  5. Response handler
  6. Data logger
  7. Dan lain — lain

Middleware yang paling umum sering kita dengar meskipun tidak menyadari adalah authentication, untuk mengecek apakah seseorang yang mengakses suatu web sudah log-in dan memiliki hak akses atau belum.

Dan tujuan utama dari adanya middleware adalah agar controller fokus dalam menyelesaikan logika alur bisnis dari suatu flow aplikasi tanpa harus melakukan hal – hal di luar itu seperti validasi input pada setiap flow. Jadi ketika data yang masuk ke controller sudah dalam keadaan bersih dan sudah siap untuk diproses sesuai dengan alur bisnis dari aplikasi tersebut. Dan dengan adanya middleware, kode kita akan lebih reusable, maintainable dan readable.

Tujuan Pengunaan Middleware

Middleware dapat digunakan untuk beberapa tujuan seperti:
1. Memberikan fasilitas untuk programmer supaya dapat mendistribusikan obyek akan dipakai pada beberapa bagian proses yang berbeda.
2. Sebagai interkoneksi ke beberapa aplikasi dan masalah interoperabilitas. Middleware menjadi sangat dibutuhkan untuk bermigrasi dari aplikasi mainframe ke aplikasi client/server dan juga untuk menyediakan komunikasi antar platform yang berbeda.

Manfaat Menggunakan Middleware

Middleware dapar memberikan manfaat tertentu seperti penjelasan dibawah ini:
1. Pada sistem yang terdistribusi maka dapat dijalankan 2 buah platform atau aplikasi secara bersamaan.
2. Dapat melakukan komunikasi pada aplikasi yang berjalan di platform berbeda.
3. Adanya transparansi pada seluruh jaringan sehingga dapat menyediakan interaksi dengan layanan atau aplikasi lainnya.

Dalam dunia teknologi informasi Middleware menjadi salah satu software yang dibuat untuk menghubungkan beberapa proses pada satu atau lebih mesin agar bisa saling berinteraksi di suatu jaringan.

Baca juga : Instalasi dan konfigurasi virtual environment

Dari keterangan diatas kita telah memahami sedikit tentang middleware, selanjutnya kita akan mencoba mengimplementasikanya pada django framework.

Study Kasus

Saat kita membuat signal untuk melakukan proses historical record user transaction, kita ingin menangkap sebuah pesan tentang siapa saja user yang melakukan perubahan data pada sebuah table. Default dari django signal, tidak dapat menangkap siapa user aktif yang sedang melakukan perubahan data pada masing-masing model, oleh karena itu dibutuhkan sebuah middleware yang bisa menangkap pesan user siapa yang sedang login.

Membuat Middleware Get Username

Buat sebuah file dengan nama middleware.py dan tempatkan pada direktory apps anda misalkan pada apps users.

from __future__ import absolute_import, division, print_function
 
try:
    from threading import local
except ImportError:
    from django.utils._threading_local import local
 
_thread_locals = local()
 
 
def get_current_request():
    """ returns the request object for this thread """
    return getattr(_thread_locals, "request", None)
 
 
def get_current_user():
    """ returns the current user, if exist, otherwise returns None """
    request = get_current_request()
    if request:
        return getattr(request, "user", None)
 
 
def thread_local_middleware(get_response):
    # One-time configuration and initialization.
 
    def middleware(request):
 
        # Code to be executed for each request before
        # the view (and later middleware) are called.
        _thread_locals.request = request
        response = get_response(request)
 
        # Code to be executed for each request/response after
        # the view is called.
        if hasattr(_thread_locals, "request"):
            del _thread_locals.request
        return response
 
    return middleware

buka file settings.py pada main folder project anda, tambahkan middleware diatas, perhatikan kode dibawah ini

MIDDLEWARE = [
    --------------
    'users.middleware.thread_local_middleware',
]

setelah menyelesaikan dua tahap diatas, saatny melakukan pengujian, misal pada method signals cara implementasinya sebagai berikut :

from apps.middleware import get_current_user
 
 
@receiver(pre_save, sender={{model_name}})
def update_profile(sender, instance, **kwargs):
    user = get_current_user()
    print(user)

 

Implementasi middleware pada django framework selesai, dari study kasus ini kamu bisa mencoba middleware untuk hal-hal yang lain, jika ada pertanyaan tentang python hubungi halovina.com

 

Baca artikel lainya :