Berkenalan Dengan Django REST Framework

Subscribe Dengan Account Google Untuk Mendapatkan Artikel Terbaru !
Berkenalan Dengan Django REST Framework
Thinking, Fast and Slow

Thinking, Fast and Slow

Daniel Kahneman adalah salah satu pemikir paling penting abad ini. Gagasannya berdampak mendalam dan luas di berbagai bidang termasuk ekonomi, pengobatan, dan politik. Dalam buku yang sangat dinanti-nantikan ini, Kahneman menjelaskan dua sistem yang mendorong cara kita berpikir. Sistem 1 bersifat cepat, intuitif, dan emosional; Sistem 2 lebih pelan, lebih bertujuan, dan lebih logis.

Buy

REST (Representational State Transfer) merupakan standar arsitektur komunikasi berbasis web yang sering diterapkan dalam pengembangan layanan berbasis web. Umumnya menggunakan HTTP (Hypertext Transfer Protocol) sebagai protocol untuk komunikasi data.

Arsitektur REST, yang umumnya dijalankan via HTTP (Hypertext Transfer Protocol), melibatkan proses pembacaan laman web tertentu yang memuat sebuah file XML atau JSON. File inilah yang menguraikan dan memuat konten yang hendak disajikan. Setelah melalui sebuah proses definisi tertentu, konsumen akan bisa mengakses antarmuka aplikasi yang dimaksudkan.

Django Rest Framework merupakan framework untuk membuat web RESTful API. Django Rest Framework sudah banyak digunakan oleh perusahan-perusahan besar seperti Mozilla, Heroku, Eventbrite, dan lain — lain. Penggunaan Django Rest Framework terbilang mudah, untuk suatu model kita tidak perlu mendefinisikan method GET, POST, UPDATE, dll, Django Rest Framework lah yang mengatur semua method request.

Table Of Content


  • DRF Setup

  • RESTFull Stucture

  • Model Serializer


DRF Setup


sebelum melanjutkan tutorial ini, pastikan kamu sudah bekerja di mode environment.

baca : Konfigurasi Python Virtual Environment

install, buka comand line dan pastikan kamu sudah dalam mode environment

pip install djangorestframework
pip freeze > requirements.txt

Update settings.py, tambahkan apps rest_framework

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'buku',
'utils',
'rest_framework'
]

RESTFul Structure


Dalam RESTful API, endpoint (URL) menentukan struktur API dan bagaimana pengguna akhir mengakses data dari aplikasi, kita akan menggunakan metode HTTP: GET, POST, PUT, DELETE.

/posts/ : Show all posts, Add new post, Update all posts, Delete all posts

/posts/<id> : Show <id>, Update <id>, Delete id

Model Serializer


Serializer DRF mengonversi instance model ke Dictionary Python, yang kemudian dapat dirender dalam berbagai format API yang sesuai - seperti JSON atau XML. Mirip dengan kelas Django ModelForm, DRF hadir dengan format ringkas untuk Serialisatornya, kelas ModelSerializer. Kelebihan dari modelserializer adalah mudah digunakan.

buat sebuah file pada apps buku dengan nama serializers.py

from rest_framework import serializers
from buku.models import Book

class BookSerializer(serializers.ModelSerializer):

class Meta:
model = Book
fields = ('id', 'name', 'penulis', 'created_date', 'update_date')

Update views.py


modifikasi file views.py seperti kode dibawah ini :

 

from django.shortcuts import render
from django.http import HttpResponse
from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework import status
from buku.models import Book
from buku.serializers import BookSerializer
from buku.forms import BookForm

def home(request):
tmpl_vars = {'form': BookForm()}
return render(request, 'book/index.html', tmpl_vars)

@api_view(['GET', 'POST'])
def book_collection(request):
if request.method == 'GET':
books = Book.objects.all()
serializer = BookSerializer(books, many=True)
return Response(serializer.data)
elif request.method == 'POST':
data = {'name': request.POST.get('book'), 'penulis': request.POST.get('penulis')}
print(data)
serializer = BookSerializer(data=data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

@api_view(['GET', 'DELETE'])
def book_element(request, pk):
try:
book = Book.objects.get(pk=pk)
except Book.DoesNotExist:
return HttpResponse(status=404)

if request.method == 'GET':
serializer = BookSerializer(book)
return Response(serializer.data)

elif request.method == 'DELETE':
book.delete()
return Response(status=status.HTTP_204_NO_CONTENT)

 

Forms


buat file dengan nama forms.py, perhatikan kode dibawah ini

from django import forms
from buku.models import Book

class BookForm(forms.ModelForm):
class Meta:
model = Book
fields = ['name','penulis']
widgets = {
'name': forms.TextInput(
attrs={'id': 'book_name', 'required': True, 'placeholder': 'book name'}
),
'penulis': forms.TextInput(
attrs={'id': 'penulis', 'required': True, 'placeholder': 'author'}
),
}

URLS


buat file urls.py, perhatikan kode di bawah ini:

from django.urls import path

from . import views

urlpatterns = [
path('', views.home, name='home'),
# api
path('api/v1/posts/',views.book_collection, name='book_collection'),
path('api/v1/posts/<int:pk>',views.book_element, name='book_element')

]

dari kode diatas kita sudah menerapkan DRF, hasil akhirnya akan seperti di bawah ini:

django rest framework

baca artikel lalinya :


 

download full source