Membuat Service User login Bagian 2 : Serializer dan JWT

Subscribe Dengan Account Google Untuk Membaca Artikel Tanpa Iklan
Membuat Service User login Bagian 2 : Serializer dan JWT

Pada tutorial sebelumnya kita telah membuat konfigurasi project django, di tutorial kali ini kita akan belajar tentang Serializer dan JWT.

Serializer merupakan sebuah fungsi  di Django framework yang digunakan untuk mengubah objek menjadi tipe data yang dapat dimengerti oleh javascript dan kerangka front-end lainya.

Serializers juga menyediakan deserialisasi, memungkinkan data yang diuraikan untuk diubah kembali menjadi tipe yang kompleks, setelah terlebih dahulu memvalidasi data yang masuk.

Penjelasan lebih detail tentang serializers dapat Anda baca di dokumentasinya Djangorest Framework.

Sebelum melanjutkan tutorial ini pastikan Anda sudah membaca tutorial sebelumnya tentang konfigurasi django project.

1) Buat Django App dengan nama API dan USERS


Untuk membuat sebuah django app Anda bisa menjalankan perintah berikut:
python manage.py startapp api
python manage.py startapp users

2) Tambahkan konfigurasi routing url dan App


Dibagian ini tambahkan django app api dan users ke file settings.py

NSTALLED_APPS = [
...

'users',
'api',
]

Kemudian buat routing url untuk api user login:

a) Buat file urls.py di app api

from django.urls import path

urlpatterns = []

 

b) Routing app api ke main project Anda, update urls.py di direktory main project

from django.urls import path, include

urlpatterns = [
path('api/', include('api.urls')),
]

 

3) Buat function checkUserLogin di views.py pada django app users

from django.contrib.auth import authenticate

def checkUserLogin(email, password):
user = authenticate(username=email, password=password)
if user is not None:
return True
else:
return False

 

4) Buat file serializers.py di app api, tambahkan kode berikut

from rest_framework import serializers

class LoginSerializer(serializers.Serializer):
email = serializers.CharField(max_length=50)
password = serializers.CharField(max_length=50)

5) Buat class LoginView di django app api

from rest_framework.views import APIView
from api.serializers import LoginSerializer
from rest_framework.parsers import JSONParser
from users.views import checkUserLogin
from django.http import JsonResponse

class LoginView(APIView):
def post(self, *args, **kwargs):
try:
data = JSONParser().parse(self.request)
serializer = LoginSerializer(data=data)
if serializer.is_valid():
if checkUserLogin(data['email'],data['password']):
return JsonResponse(data = {
"message": "Sucess",
"token": ""
}, status=200)
else:
return JsonResponse(data = {
"message": "Cek user dan password Anda "
}, status=400)
else:
return JsonResponse(serializer.errors, status=400)
except Exception as e:
return JsonResponse(data = {
"message": str(e)
}, status=400)

6) Update file urls.py pada django app api

from django.urls import path
from api.users.views import LoginView

urlpatterns = [
path('v1/users/login', LoginView.as_view(), name='api_user_login')
]

7) Buat token dengan pyjwt

import jwt
from django.conf import settings

def jwtEncode(payload):
jwt_token = jwt.encode(payload, settings.SECRET_KEY, algorithm="HS256")
return jwt_token

8) Buat payload jwt dan tambahkan ke class LoginView

...
token = jwtEncode({ "email": data['email'], "time": timezone.now().strftime("%Y-%m-%d %H:%M:%S %z") })
....

9) Uji coba menggunakan postman


Buat sebuah request dengan method post dan tambahkan paload berikut:

{
"email":"admin@example.com",
"password":"testXyz123"
}

Jika semua berjalan lancar anda akan mendapatkan response sebagai berikut:

{
"message": "Sucess",
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJlbWFpbCI6ImFkbWluQGV4YW1wbGUuY29tIiwidGltZSI6IjIwMjItMDktMDkgMTE6NTQ6NTkgKzAwMDAifQ.1hF2T1JVh4_BXnim8YRE6UdBwKkbt0BrA3ImmIv1N1M"
}

Selesai sudah seri tutorial user service login, di tutorial selanjutnya kita akan membuat CRUD service produk.

Githubhttps://github.com/halovina/hvsuserservice/tree/bagian-2

Video :

Baca artikel lainya :