Django REST Framework Nedir?
Eğer Django kullanıyorsanız, DRF ile bir API oluşturmak oldukça basittir. Ancak önce Django'yu ve Python’u iyi bir şekilde anlamanız gerekir.
Django Projesi Oluşturma
```bash
pip install django
```
Yükleme tamamlandıktan sonra, yeni bir Django projesi oluşturmak için şu komutu girin:
```bash
django-admin startproject myproject
```
Projenin adını myproject olarak belirledik. Bu komutla Django'nun temel dosya yapısı otomatik olarak oluşturulacaktır. Şimdi Django'nun çalışıp çalışmadığını kontrol edelim:
```bash
python manage.py runserver
```
Tarayıcınızda `http://127.0.0.1:8000/` adresine giderek Django’nun başarıyla kurulduğunu doğrulayabilirsiniz.
Django REST Framework Kurulumu
```bash
pip install djangorestframework
```
Yükleme işlemi bittikten sonra, DRF'yi Django projenizde kullanabilmek için settings.py dosyasına şu satırı eklemelisiniz:
```python
INSTALLED_APPS = [
...
'rest_framework',
]
```
İlk API Görünümümüzü Oluşturma
```bash
python manage.py startapp blog
```
Uygulama oluşturulduktan sonra, blog/views.py dosyasına şu kodu ekleyelim:
```python
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
class HelloWorld(APIView):
def get(self, request):
return Response({"message": "Hello, World!"}, status=status.HTTP_200_OK)
```
Bu, basit bir GET isteği ile “Hello, World!” mesajını döndüren bir API görüşüdür. Artık bu görünüme bir URL bağlamamız gerekiyor. blog/urls.py dosyasını şu şekilde oluşturabiliriz:
```python
from django.urls import path
from .views import HelloWorld
urlpatterns = [
path('hello/', HelloWorld.as_view(), name='hello_world'),
]
```
Şimdi, myproject/urls.py dosyasına gidip bu yeni URL’i ekleyelim:
```python
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('api/', include('blog.urls')), # Blog uygulamasındaki URL’leri dahil ediyoruz
]
```
Bu noktada Django projemizi yeniden başlatmamız gerekecek. Terminalde şu komutu çalıştırarak sunucuyu yeniden başlatın:
```bash
python manage.py runserver
```
Tarayıcıda `http://127.0.0.1:8000/api/hello/` adresine gittiğinizde, "Hello, World!" mesajını görmelisiniz.
DRF ile Serializer Kullanımı
```python
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
```
Modelimizi ekledik, ancak henüz bu modeli kullanarak veriyi JSON formatında döndüren bir API oluşturmadık. Bunun için DRF’nin serializers modülünü kullanacağız. blog/serializers.py dosyasını oluşturup, şu şekilde yazalım:
```python
from rest_framework import serializers
from .models import Post
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = ['id', 'title', 'content', 'created_at']
```
Bu serializer, Post modelinin verilerini JSON formatında döndürecektir.
Şimdi, blog/views.py dosyasını şu şekilde güncelleyelim:
```python
from rest_framework.generics import ListCreateAPIView
from .models import Post
from .serializers import PostSerializer
class PostListCreate(ListCreateAPIView):
queryset = Post.objects.all()
serializer_class = PostSerializer
```
Burada, ListCreateAPIView ile hem listeleme hem de oluşturma işlemlerini gerçekleştirebiliriz. Şimdi, blog/urls.py dosyasını şu şekilde güncelleyelim:
```python
from django.urls import path
from .views import PostListCreate
urlpatterns = [
path('posts/', PostListCreate.as_view(), name='post_list_create'),
]
```
Şimdi API’miz, `POST` isteği ile veri ekleyebilir ve `GET` isteği ile tüm blog yazılarını listeleyebilir.