Persiapan Project REST API menggunakan django REST framework

Pendahuluan

django adalah python framework untuk membuat full stack web application, namun dapat digunakan sebagai backend saja dan menggunakan frontend framework seperti react.js, vue.js dan lainnya.

RESTful API adalah gaya arsitektur untuk antarmuka program aplikasi (API) yang menggunakan permintaan HTTP untuk mengakses dan menggunakan data. Data tersebut dapat digunakan untuk tipe data GET, PUT, POST dan DELETE, yang merujuk pada operasi membaca, memperbarui, membuat, dan menghapus sumber daya.

django REST framework adalah toolkit yang flexible dan sangat powerful untuk membuat Web APIs.

Instalasi Library

Library yang digunakan adlaah django dan djangoframework. Untuk instalasi gunakan perintah berikut:

$ pip install django
$ pip install djangorestframework

IDE

Silakan gunakan IDE favorite Anda, pada tutorial digunakan Visual Studio Code.

Membuat Project Django

Pada direktori project, gunakan perintah django-admin untuk membuat project dengan nama djangoAPI

$ django-admin startproject djangoAPI

Setelah project selesai dibuat, buka file settings.py dalam direktori nama project Anda. Jika Anda mengikuti nama project diatas maka lokasi file adalah djangoAPI/djangoAPI/settings.py

Karena kita sudah menginstal djangorestframework, perlu kita tambahkan informasi tersebut pada file settings.py. (Lihat variable INSTALLED_APPS, ditambahkan ‘”‘rest_framework’).

"""
Django settings for djangoAPI project.

Generated by 'django-admin startproject' using Django 4.2.3.

For more information on this file, see
https://docs.djangoproject.com/en/4.2/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/4.2/ref/settings/
"""

from pathlib import Path

# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/4.2/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'django-insecure-**r$fu9jcmqjd0mz6zoo1jxfu@du1lud4pb5mcu)4n#$bmwuuu'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = []


# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'djangoAPI.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

WSGI_APPLICATION = 'djangoAPI.wsgi.application'


# Database
# https://docs.djangoproject.com/en/4.2/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}


# Password validation
# https://docs.djangoproject.com/en/4.2/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]


# Internationalization
# https://docs.djangoproject.com/en/4.2/topics/i18n/

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/4.2/howto/static-files/

STATIC_URL = 'static/'

# Default primary key field type
# https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field

DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'

Selanjutnya kita lakukan proses migrate. Masuk ke direktori project, lalu jalankan perintah

$ python manage.py migrate

Jika proses migrasi tidak ada masalah, database db.sqlite3 akan ditambahkan.

Untuk menjalankan server gunakan perintah:

$ python manage.py runserver

Jika tidak ada masalah, Anda dapat buka browser dan masukan alamat http://127.0.0.1:8000/ dan akan ditampilkan kurang lebih seperti berikut:

Sharing is caring: