Thinking, Fast and SlowDaniel 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
baca : Konfigurasi Python Virtual Environment
install, buka comand line dan pastikan kamu sudah dalam mode environment
pip install djangorestframework
pip freeze > requirements.txt
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'buku',
'utils',
'rest_framework'
]
/posts/ : Show all posts, Add new post, Update all posts, Delete all posts
/posts/<id> : Show <id>, Update <id>, Delete id
buat sebuah file pada apps buku dengan nama serializers.py
from rest_framework import serializers
from buku.models import Bookclass BookSerializer(serializers.ModelSerializer):
class Meta:
model = Book
fields = ('id', 'name', 'penulis', 'created_date', 'update_date')
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 BookFormdef 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)
from django import forms
from buku.models import Bookclass 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'}
),
}
from django.urls import pathfrom . 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:
baca artikel lalinya :