Görüntülenme: 161

Yayın Tarihi: 12-03-2024


API, yazılım uygulamaları arasında iletişim kurmayı sağlayan bir arayüzdür. API’ler, uygulamaların verilerini paylaşmalarını, kullanmalarını veya etkileşimde bulunmalarını sağlar. İşte bu yüzden API’ler yazılım dünyasının vazgeçilmez bir parçasıdır. Django Rest Framework (DRF) ise RESTful API’ler oluşturmanıza yardımcı olur.

Bu yazıda, Django Rest Framework ile örnek bir RestAPI geliştireceğiz.

📖 İçindekiler

  • Django Rest Framework Nedir?
  • DRF’nin Temel Özellikleri
  • Örnek API
    - settings.py
    - models.py
    - serializers.py
    - views.py
    - urls.py
  • Test ve Dökümantasyon
  • Sonuç

Django Rest Framework Nedir?

Django Rest Framework (DRF), Django tabanlı web uygulamaları için RESTful API’lerin hızlı bir şekilde oluşturulmasına ve yönetilmesine yardımcı olan bir Python kütüphanesidir. Django Rest Framework, Django’nun veri tabanı yeteneklerini kullanarak, API geliştirme sürecini kolaylaştırır.

DRF’nin Temel Özellikleri

  1. Serileştirme (Serialization): Django Rest Framework, veritabanı modellerinizi JSON veya diğer veri formatlarına dönüştürmeyi kolaylaştıran serileştirme araçları sunar. Bu, verilerin API üzerinden iletilmesini ve alınmasını basit hale getirir.
  2. Hazır API View’ler: DRF, çok sayıda hazır API view’i sunar. Bunlar, temel CRUD (Create, Read, Update, Delete) işlemlerini kolayca gerçekleştirmenizi sağlar. Örneğin, ListCreateAPIView ve RetrieveUpdateDestroyAPIView gibi API view'lari, listeleme, oluşturma, okuma, güncelleme ve silme işlemlerini destekler.
  3. İzinler ve Yetkilendirme: DRF, API’leriniz için farklı kullanıcı gruplarına erişim izinlerini ve yetkilendirmeyi yönetmenize olanak tanır. Bu, API’lerin güvenliğini sağlamak için önemlidir.
  4. URL Yönlendirme: API URL’lerini tanımlamak ve yönlendirmek için DRF, Django’nun URL yönlendirme özelliklerini kullanır. Bu, API endpoint’lerinin nasıl görüneceğini ve davranacağını özelleştirmenizi sağlar.
  5. Dökümantasyon: DRF, otomatik API dökümantasyonu oluşturmanıza yardımcı olan araçlar sunar. Bu, API kullanıcılarına API hakkında bilgi verir ve API’yi daha kullanıcı dostu hale getirir.
  6. Veri Doğrulama (Validation): Veri girişinin doğrulanması için DRF, özelleştirilebilir doğrulama mekanizmaları sunar. Bu, veri hatalarını ele almanıza yardımcı olur.
  7. Sorgu Parametreleri: DRF, sorgu parametrelerini kullanarak API sonuçlarını filtreleme, sayfalama ve sıralama yapmanızı sağlar. Bu, büyük veri setleriyle çalışırken API performansını artırmanıza yardımcı olur.

🛠 Örnek API

Başlamadan önce gerekli DRF modülünü kuralım:

pip install djangorestframework

Projenizin içerisinde bir uygulama oluşturalım:

python manage.py startapp API

settings.py

Projenizin settings.py dosyasındaki INSTALLED_APPS kısmını düzenleyelim:

INSTALLED_APPS = [
    ...

    "rest_framework",
    "API",
]

models.py

API > models.py dosyasında bir model oluşturalım:

from django.db import models

class Kitaplar(models.Model):
    kitap = models.CharField(max_length=200)
    yazar = models.CharField(max_length=100)
    sayfa = models.IntegerField()

    def __str__(self):
        return self.kitap

serializers.py

Şimdi verilerimizi doğrulayabilmek ve uygun veri türüne çevirebilmek için serileştirme işlemi yapmamız gerekiyor.

API > serializers.py adında dosya oluşturup aşağıdaki kodu yazalım:

from rest_framework import serializers
from .models import Kitaplar

class KitapSerializers(serializers.ModelSerializer):
    class Meta:
        model = Kitaplar
        fields = '__all__'

    def validate_sayfa(self, SAYI):
        if SAYI <= 0:
            raise serializers.ValidationError("Sayfa sayısı 0'dan büyük olmalı.")
        return SAYI

Bu işlem, gelen verileri doğrulamamızı sağlıyor. Yukarıda ki örneğe bakarsak, yazdığımız validate’e göre sayfa sayısının sıfırdan büyük olmasını istiyor. Gönderilen değer sıfır veya negatif bir sayı ise veriyi kabul etmiyor.

views.py

API -> views.py dosyasını açalım ve aşağıdaki kodları ekleyelim.

from rest_framework.generics import ListCreateAPIView, RetrieveUpdateDestroyAPIView
from .models import Kitaplar
from .serializers import KitapSerializers

class KitapEkle(ListCreateAPIView):
    queryset = Kitaplar.objects.all()
    serializer_class = KitapSerializers

class KitapGuncelle(RetrieveUpdateDestroyAPIView):
    queryset = Kitaplar.objects.all()
    serializer_class = KitapSerializers

Bu kısımda DRF’de dahili olarak gelen veri listeleme, oluşturma ve güncelleme fonksiyonlarını kullanarak views’ler oluşturduk.

urls.py

Projenizin veya uygulamanızın urls.py dosyasına giderek API yolumuzu belirleyelim:

from django.urls import path
from API import views

urlpatterns = [
    path('kitap-ekle/', views.KitapEkle.as_view(), name='kitap-ekle'),
    path('kitap-guncelle/<int:pk>/', views.KitapGuncelle.as_view(), name='kitap-guncelle'),
]

Son olarak veritabanımızı taşıyıp aktif edelim.

python manage.py makemigrations
python manage.py migrate

Tüm işlemlerimiz bitti. Artık oluşturduğumuz API’mizi test edebiliriz.

Projemizi başlatalım.

python manage.py runserver

Örnek olarak bir kaç kitap ekleyebiliriz. Bunun için aşağıdaki adrese gidip POST isteği atalım.

http://127.0.0.1:8000/kitap-ekle/

Bu adrese gittiğimiz zaman DRF API döküman sayfası bizi karşılayacaktır.

Ben örnek olarak 2 veri ekledim. GET isteği atıldığı zaman verileri listeleriz, POST isteği attığımız da yeni veri ekleyebiliriz.

Serileştirme kısmında yazdığımız validate’i burada sıfır veya eksi değer yazarak kontrol edebiliriz.

Aşağıdaki adrese giderek kitapları güncelleyelim.

http://127.0.0.1:8000/kitap-guncelle/1/

Yine aynı şekilde adrese GET isteği atıldığı zaman ilgili veriyi listeleriz. PUT isteği ile veriyi güncelleyebiliriz.

✅ Sonuç

Bu makalede, Django Rest Framework kullanarak RESTful API geliştirmenin temel adımlarını inceledik.

Ayrıca, API dökümantasyonunu otomatik olarak oluşturmak için DRF’in sunduğu araçları kullandık. Bu, API kullanıcılarının API’yi daha iyi anlamalarına yardımcı olacaktır.


Etiketler Django RestAPI
Paylaş