Kamis, 09 April 2020

Cara Buat Web API Python Dengan Django

django_python

Salah satu nama paling populer dalam pengembangan Python API, Django telah meningkat popularitasnya sejak dimulai pada tahun 2005.

Django dikelola oleh Django Software Foundation dan mempunyai dukungan komunitas yang besar, dengan lebih dari 11.600 anggota di seluruh dunia. Di Stack Overflow, Django memiliki sekitar 191.000 pertanyaan yang ditandai. Situs web seperti Spotify, YouTube, dan Instagram mengandalkan Django untuk manajemen aplikasi dan data.

Artikel ini menjelaskan step by step pembuatan API sederhana menggunakan Django untuk mengambil data dari server menggunakan metode GET dari protokol HTTP.

Buat proyek Django.

Pertama, buat struktur untuk aplikasi Django Anda. Anda dapat melakukan step ini di folder mana saja:


$ mkdir myproject
$ cd myproject


Kemudian, buat lingkungan virtual untuk mengisolasi dependensi paket secara lokal di dalam direktori proyek:


$ python3 -m venv env
$ source env/bin/activate


Di Windows, gunakan perintah env\Scripts\activate untuk mengaktifkan lingkungan virtual Python.

Instal Django dan framework Django REST

Selanjutnya, instal modul Python untuk Django dan Django REST:


$ pip3 install django
$ pip3 install djangorestframework


Inisiasi proyek Django baru

Sampai tahap ini karena kita sudah memiliki lingkungan kerja untuk aplikasi maka selanjutnya kita harus membuat instance proyek Django baru. Tidak seperti kerangka kerja minimal Python lainnya seperti Flask, Django menyertakan perintah khusus untuk proses ini (perhatikan karakter trailing. Pada perintah pertama):


$ django-admin startproject tutorial
$ cd tutorial
$ django-admin startapp quickstart


Django menggunakan database sebagai backendnya, jadi Anda harus menyinkronkan database sebelum memulai pengembangan. Basis data dapat dikelola dengan skrip manage.py yang dibuat saat menjalankan perintah django-admin. Karena saat ini berada di direktori tutorial, gunakan notasi ../ untuk menjalankan skrip, terletak satu direktori di atas:


$ python3 ../manage.py makemigrations
No changes detected
$ python4 ../manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying sessions.0001_initial... OK


Buat user di Django

Buat pengguna awal bernama admin dengan contoh kata sandi kata sandi123:
Buat kata sandi saat diminta.


$ python3 ../manage.py createsuperuser \
  --email admin@example.com \
  --username admin


Menerapkan serializers dan views di Django

Agar Django dapat memberikan informasi ke permintaan HTTP GET, objek informasi harus diterjemahkan ke dalam data respons yang valid. Django mengimplementasikan serializers untuk ini.

Di proyek Anda, tentukan beberapa serialisator dengan membuat modul baru bernama quickstart/serializers.py, yang akan digunakan untuk representasi data:


from django.contrib.auth.models import User, Group
from rest_framework import serializers

class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = ['url', 'username', 'email', 'groups']

class GroupSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Group
        fields = ['url', 'name']


View di Django adalah fungsi yang mengambil permintaan web dan mengembalikan respons web. Respons dapat berupa HTML, atau HTTP redirect, atau kesalahan HTTP, dokumen JSON atau XML, gambar atau file TAR, atau apa pun yang dapat dapatkan melalui internet. Untuk membuat view, buka quickstart/views.py dan masukkan kode berikut. File ini sudah ada dan memiliki beberapa teks boilerplate, jadi simpan dan tambahkan teks berikut ke file:


from django.contrib.auth.models import User, Group
from rest_framework import viewsets
from tutorial.quickstart.serializers import UserSerializer, GroupSerializer

class UserViewSet(viewsets.ModelViewSet):
    """
    API endpoint  allows users to be viewed or edited.
    """
    queryset = User.objects.all().order_by('-date_joined')
    serializer_class = UserSerializer

class GroupViewSet(viewsets.ModelViewSet):
    """
    API endpoint  allows groups to be viewed or edited.
    """
    queryset = Group.objects.all()
    serializer_class = GroupSerializer


Generate URL dengan Django

Sekarang kita lanjut membuat URL sehingga orang dapat mengakses API. Buka urls.py di text editor dan ganti kode sampel default dengan kode ini:


from django.urls import include, path
from rest_framework import routers
from tutorial.quickstart import views

router = routers.DefaultRouter()
router.register(r'users', views.UserViewSet)
router.register(r'groups', views.GroupViewSet)

# Gunakan perutean URL otomatis
# Dapat juga memasukkan URL login untuk API
urlpatterns = [
    path('', include(router.urls)),
    path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]


Sesuaikan pengaturan proyek Django

Modul pengaturan untuk proyek contoh ini disimpan dalam tutorial/settings.py, jadi buka itu dalam teks editor dan tambahkan rest_framework ke akhir daftar INSTALLED_APPS:


INSTALLED_APPS = [
    ...
    'rest_framework',
]


Tes Django API

Oke, sekarang kita siap untuk menguji API yang sudah dibuat. Pertama, mulai server bawaan menggunakan perintah:


$ python3 manage.py runserver


Anda dapat mengakses API ke URL http://localhost:8000/users menggunakan curl:


$ curl --get http://localhost:8000/users/?format=json
[{"url":"http://localhost:8000/users/1/?format=json","username":"admin","email":"admin@example.com","groups":[]}]


Atau gunakan Firefox atau browser lainnya terserah pilihan Anda:

django_rest_api

Untuk pengetahuan yang lebih mendalam tentang RESTful APIs menggunakan Django dan Python, lihat dokumentasi Django.

Mengapa saya harus menggunakan Django?

Kelebihan utama Django:

  • Jumlah komunitas Django terus bertambah, sehingga Anda memiliki banyak sumber daya untuk panduan, bahkan untuk proyek yang rumit sekalipun.
  • Fitur seperti templating, routing, form, otentikasi, dan tool manajemen disertakan secara default. Anda tidak perlu mencari tool eksternal atau third-party tool yang terkadang membawa masalah kompatibilitas.
  • Konstruksi sederhana untuk user, loop, dan conditions memungkinkan Anda untuk fokus pada penulisan kode.
  • Django adalah kerangka kerja yang matang dan dioptimalkan sangat cepat dan dapat diandalkan.


Kelemahan utama dari Django adalah:

  • Django itu kompleks! Dari sudut pandang developer, Django bisa lebih sulit untuk dipelajari daripada kerangka kerja yang lebih sederhana.
  • Ada ekosistem besar di sekitar Django. Sebetulnya hal ini bagus sekali akan tetapi hal tersebut bisa sangat membingungkan ketika Anda masih belajar.

2 komentar:

  1. tutorial yang sangat mudah dipahami, oya kira2 klo misal saya sudah buat url method crud json dengan php codeigniter, apakah bisa disambungkan juga pakai django ya pak? Salam coder! mampir juga ke blog 'kentang' saya howidhea.web.id pak. terimakasih.

    BalasHapus


EmoticonEmoticon