Ikuti panduan langkah demi langkah ini dan Anda akan memiliki inti CRUD API untuk dikembangkan lebih lanjut.

Django Rest Framework (DRF) adalah kerangka kerja Django yang menawarkan dukungan untuk membangun REST API. Seperti Django, DRF mengizinkan Anda membangun tampilan API Anda dengan tampilan berbasis fungsi atau berbasis kelas.

Meskipun tampilan berbasis kelas mungkin sulit untuk dikerjakan pada awalnya, tampilan tersebut menawarkan manfaat seperti struktur kode yang lebih baik, dapat digunakan kembali, pewarisan, dan keringkasan.

Buat API Manajer Resep Dengan Django REST Framework

Aplikasi pengelola resep adalah cara terbaik untuk mempelajari tampilan berbasis kelas di DRF. Fitur seperti menambah, menghapus, dan mengedit resep akan membantu Anda memahami cara menerapkan operasi CRUD (Buat, Baca, Perbarui, Hapus). Langkah-langkah berikut akan mengajarkan Anda cara membuat CRUD API.

Anda dapat menemukan kode untuk panduan ini di GitHub.

Langkah 1: Instal Django REST Framework dan Konfigurasikan Proyek Anda

instagram viewer
  1. Buat lingkungan virtual untuk proyek Anda dan instal dependensi berikut:
    pip install django djangorestframework
  2. Buat proyek Django bernama inti dengan perintah berikut:
    django-admin startproject core .
  3. Buat aplikasi bernama manajer_resep:
    python manage.py startapp recipe_manager
  4. Bukalah inti/pengaturan.py file dan arahkan ke DIINSTALLED_APPS daftar untuk mendaftarkan aplikasi Anda:
    INSTALLED_APPS = [
    # custom apps
    'rest_framework',
    'recipe_manager',
    ]

Langkah 2: Buat Model untuk Aplikasi Resep Anda

  1. Bukalah resep_manager/models.py file dan buat model untuk aplikasi Anda. Berikut ini contoh dasar model resep:
    # models.py
    from django.db import models

    classRecipe(models.Model):
    recipe_name = models.CharField(max_length=255)
    ingredients = models.TextField()
    instructions = models.TextField()

  2. Buat migrasi dan migrasikan model Anda ke database dengan perintah ini:
    python manage.py makemigrations && python manage.py migrate

Langkah 3: Buat Serializer untuk Aplikasi Anda

Serializer adalah komponen Django yang membantu Anda mengonversi tipe data kompleks, seperti kumpulan kueri Anda, ke format yang bisa Anda render, seperti JSON atau XML, dan sebaliknya.

Untuk membuat serializer, ikuti langkah-langkah berikut:

  1. Buat file bernama resep_manager/serializers.py.
  2. Impor serializer modul serta model yang ingin Anda buat serial:
    # serializers.py
    from rest_framework import serializers

    from .models import Recipe # the model to serialize

  3. Dalam file yang sama, buat kelas serializer untuk model Anda dan tentukan Meta kelas di dalamnya:
    # serializers.py
    classRecipeSerializer(serializers.ModelSerializer):
    classMeta:
    model = Recipe
    fields = ('recipe_name', 'ingredients', 'instructions')
    Dalam kode ini, Meta kelas mendefinisikan model yang akan diserialkan dan bidang spesifik yang harus ditangani oleh serializer. Itu bidang atribut dapat berupa daftar atau tupel. Jika Anda ingin membuat serialisasi semua bidang dalam model Anda, Anda dapat melakukannya seperti ini:
    classMeta:
    fields = "__all__"

Langkah 4: Tulis Tampilan untuk Operasi CREATE

Anda dapat membuat tampilan berbasis kelas untuk aplikasi Anda dengan mengimpor tampilan umum yang tersedia di Django. Anda dapat membaca tentang pandangan ini dari Dokumentasi resmi Django. Untuk mengimplementasikan operasi CREATE dari CRUD, Anda harus mengimpor BuatAPIView. Anda juga harus mengimpor serializer dan model Anda:

# views.py
from rest_framework.generics import CreateAPIView

from .models import Recipe
from .serializers import RecipeSerializer

Untuk mengimplementasikan operasi CREATE, Anda hanya perlu menentukan serializer yang harus digunakan tampilan Anda. Berikut ini contohnya:

# Create view
classRecipeCreateView(CreateAPIView):
serializer_class = RecipeSerializer

Dengan pengaturan ini, Anda dapat membuat permintaan POST ke aplikasi Anda.

Langkah 5: Tulis Tampilan untuk Operasi READ

  1. Untuk mengimplementasikan operasi READ, impor Tampilan DaftarAPI untuk pandangan Anda. Tampilan ini membantu Anda membuat daftar objek model:
    # views.py
    from rest_framework.generics import CreateAPIView, ListAPIView
  2. Buat kelas untuk tampilan Anda dan tentukan serializer dan kumpulan kueri yang akan digunakan:
    # List view
    classRecipeListView(ListAPIView):
    serializer_class = RecipeSerializer
    queryset = Recipe.objects.all()
  3. Buat tampilan untuk membaca resep tertentu. Untuk melakukan ini, Anda memerlukan AmbilAPIView jadi tambahkan ke daftar impor Anda:
    # views.py
    from rest_framework.generics import CreateAPIView, ListAPIView, RetrieveAPIView
    Selanjutnya, buat tampilan yang Anda perlukan:
    # Retrieve view
    classRecipeRetrieveView(RetrieveAPIView):
    serializer_class = RecipeSerializer
    queryset = Recipe.objects.all()

Langkah 6: Tulis Tampilan untuk Operasi UPDATE dan DELETE

Untuk mengimplementasikan operasi UPDATE dan DELETE, Anda memerlukan PerbaruiAPIView Dan HancurkanAPIView masing-masing, jadi imporlah:

from rest_framework.generics import (
ListAPIView,
CreateAPIView,
RetrieveAPIView,
UpdateAPIView, # new
DestroyAPIView, # new
)

Selanjutnya, buat tampilan, seperti yang Anda lakukan sebelumnya. Kali ini, pandangan Anda akan mewarisi dari PerbaruiAPIView Dan HancurkanAPIView, masing-masing:

# Update view
classRecipeUpdateView(UpdateAPIView):
serializer_class = RecipeSerializer
queryset = Recipe.objects.all()

# Delete view
classRecipeDeleteView(DestroyAPIView):
serializer_class = RecipeSerializer
queryset = Recipe.objects.all()

Langkah 7: Buat URL untuk Aplikasi Anda

  1. Tambahkan kode ini ke inti/urls.py untuk mengonfigurasi URL Anda:
    from django.urls import path, include

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

  2. Tambahkan kode berikut ke file Anda resep_manager/urls.py mengajukan:
    from django.urls import path
    from. import views

    urlpatterns = [
    # List view (Read all)
    path('recipes/', views.RecipeListView.as_view(), name='recipe-list'),

    # Create view
    path('recipes/create/', views.RecipeCreateView.as_view(), name='recipe-create'),

    # Retrieve view (Read one)
    path('recipes//', views.RecipeRetrieveView.as_view(), name='recipe-retrieve'),

    # Update view
    path('recipes//update/', views.RecipeUpdateView.as_view(), name='recipe-update'),

    # Delete view
    path('recipes//delete/', views.RecipeDeleteView.as_view(), name='recipe-destroy'),
    ]

    Dari kode di atas, Anda akan mengamati bahwa tampilan berbasis kelas menggunakan as_view() berfungsi untuk membuat pola URL mereka. Anda juga dapat membaca tentang perbedaan antara proyek dan aplikasi di Django jika Anda bingung dengan penggunaannya di sini.

Langkah 8: Uji Titik Akhir API Anda

Dari direktori proyek Anda, jalankan perintah berikut:

python manage.py runserver

Ini akan memulai server Anda, melakukan beberapa pemeriksaan, dan mencetak URL yang dapat Anda akses melaluinya.

Anda sekarang dapat menguji titik akhir API Anda dengan menavigasi ke masing-masing URL (misalnya, /api/recipes/) dan mengirim Metode permintaan HTTP untuk operasi CRUD. Anda akan melihat antarmuka default seperti ini:

Daripada menggunakan browser, Anda bisa uji API Anda dengan Tukang Pos.

Berlatih KERING Saat Membuat CRUD API

KERING (Jangan Ulangi Sendiri) adalah a prinsip pemrograman yang harus Anda adopsi untuk meningkatkan kualitas kode Anda.

Meskipun tampilan yang ditulis di atas berfungsi dengan baik, Anda dapat menghindari banyak pengulangan dengan menggunakan DaftarBuatAPIView dan itu AmbilUpdateDestroyAPIView pandangan umum.

ListCreateAPIView menggabungkan Tampilan DaftarAPI Dan BuatAPIView, sedangkan RetrieveUpdateDestroyAPIView menggabungkan AmbilAPIView, PerbaruiAPIView, dan itu HancurkanAPIView.

Anda dapat mengubah tampilan sebelumnya agar terlihat seperti ini:

from rest_framework.generics import ListCreateAPIView, RetrieveUpdateDestroyAPIView

from .models import Recipe
from .serializers import RecipeSerializer

classRecipeListCreateAPIView(ListCreateAPIView):
serializer_class = RecipeSerializer
queryset = Recipe.objects.all()

classRecipeRetrieveUpdateDeleteAPIView(RetrieveUpdateDestroyAPIView):
serializer_class = RecipeSerializer
queryset = Recipe.objects.all()

Pendekatan ini mengurangi jumlah keseluruhan kode.

Anda dapat membuat URL untuk tampilan baru seperti ini:

from django.urls import path
from .views import RecipeListCreateAPIView, RecipeRetrieveUpdateDeleteAPIView

urlpatterns = [
# List and Create view
path('recipes/', RecipeListCreateAPIView.as_view(), name='recipe-list-create'),

# Retrieve, Update, and Delete view
path('recipes//', RecipeRetrieveUpdateDeleteAPIView.as_view(), name='recipe-retrieve-update-destroy'),
]

Anda dapat menguji titik akhir ini dengan Postman atau apa pun Alat pengujian API kamu lebih suka.

Tampilan Berbasis Kelas Generik Membuat Pekerjaan Anda Lebih Mudah

Seperti terlihat di atas, tampilan berbasis kelas umum dapat mempercepat proses pembuatan tampilan. Sekarang Anda hanya perlu mewarisi APIView yang tepat untuk kasus penggunaan Anda.

Anda juga harus memastikan bahwa Anda menerapkan praktik pemrograman yang baik, sehingga Anda tidak menulis kode yang buruk.