Django ile Kendi REST API’ mizi Nasıl Oluştururuz?

Bu yazıda django rest api framework’ ü kullanmadan kendi RESTful API’ nizi nasıl oluşturacağınız anlatılacaktır. Bunun için öncelikle komut satırından (windows — cmd, linux — Ctrl+Alt+t) aşağıdaki örnekteki gibi yeni bir django projesi oluşturun.

django-admin startproject simpleApiProject

Eğer projeniz hatasız bir şekilde oluşmuş ise aşağıdaki gibi bir dosya yapısı oluşmalıdır.

Bu işlemden sonraki adımda django uygulaması oluşturulacaktır. Uygulama kodu ve dizin görünümü aşağıda verilmiştir.

django-admin startapp api

Tüm bu işlemler bittikten sonra django projesindeki settings.py, urls.py ve views.py dosyalarındaki gerekli düzeltmeler sırası ile aşağıda verilmiştir.

settings.py için yapılması gereken işlem “INSTALLED_APPS” içerisine oluşturduğumuz yeni uygulamanın adı eklenir. Bu örnek için “api” uygulaması oluşturulduğundan bu listeye ‘api’ stringi eklenir.

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'api', #kendi uygulamalarinizi buraya ekleyeceksiniz
    #uygulama olusturdukca buraya uygulama isimlerini eklemeniz gerekmektedir
]

Ayrıca settings.py dosyasının en altına aşağıda belirtilen komutları da ekleyiniz;

MEDIA_URL ='/media/'
MEDIA_ROOT =os.path.join(BASE_DIR,'media')#media kullanıcıların upload ettiği dosya

settings.py dosyasındaki işlemimiz bittikten sonra django projesini hazırlamak için kullanılan aşağıdaki iki komut terminal ekranından çalıştırılır. Bu komutu yazmanız için öncelikle oluşturulan projenin içinde olmalısınız. Örneğin; cd projePath

python manage.py makemigrations

python manage.py migrate 

urls.py dosyasının içerisini aşağıdaki gibi değiştirin;

from django.contrib import admin
from django.urls import path

from django.conf.urls import url
from django.conf.urls.static import static
from django.conf import settings

from api import views

urlpatterns = [
    path('admin/', admin.site.urls),
    url(r'^test/(?P<search>\w{1,50})/$', views.genderSearch),
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) #resimleri belirtilen yola yukler

views.py dosyasının içerisini ise aşağıda verildiği gibi yeniden düzenleyin;

# Create your views here.
from django.views.decorators.csrf import csrf_exempt
from django.http import HttpResponse
import json


@csrf_exempt
def genderSearch(request, search=None):
    if request.method == 'POST':
        return HttpResponse(json.dumps({"success": True, "result": "Kadın"}),
                            content_type="application/json")
    return HttpResponse(json.dumps({"success": False, "result": "Erkek"}),
                        content_type="application/json") #GET

Tüm dosyalar ayarlandıktan sonra artık proje çalıştırmaya hazır hale gelmiş demektir. Sistemi başlatmak için komut satırına “python manage.py runserver” komudunu yazıp “Enter” tuşuna bastığınızda artık oluşturduğunuz sistem çalışıyor demektir. Sistemi test etmek için herhangi bir web browser (chrome, yandex, vb.) açın ve adres çubuğuna “http://localhost:8000/” veya “http://localhost:8000/test/” yazın karşınıza aşağıdaki gibi bir ekran gelecektir.

Adres çubuğuna “http://localhost:8000/test/search/” yazdığınızda ise aşağıdaki ekranı göreceksiniz.

Yukarıdaki sonuç  api’ ye “GET” metodu ile gidilince vermesini istediğimiz çıktıdır.  Şimdi başka bir python dosyası oluşturularak api’ ye post isteği göndermek istiyoruz. Bunun için öncelikle requestApi.py adlı bir python dosyası oluşturduk ve dosyanın içeriği aşağıda verildiği gibidir.

import requests

# USAGE:  python simple_request.py
KERAS_REST_API_URL = "http://localhost:8000/test/search/?"

r_person = requests.post(KERAS_REST_API_URL)
response_data = r_person.json()

print(response_data)

Dosya oluşturduktan sonra farklı bir terminal ekranından “python requestApi.py” komutuyla yazdığımız api’ ye post istekleri göndermiş oluyoruz ve api’ den dönen sonuç aşağıdaki ekran çıktısında gösterilmiştir.

(SSMApi36) C:\Users\lenovo\Desktop\Python\simple-keras-rest-api>python requestApi.py
{‘success’: True, ‘result’: ‘POST’}

Bir sonraki yazıda bir api üzerinden resim verisi nasıl gönderileceği anlatılacaktır.

Hazırlayanlar: Semiha MAKİNİST, Betül ÇİL