با استفاده از این کتابخانه جنگو، می توانید در کمترین زمان یک API اصلی REST ایجاد کنید.
اگر از یک دستگاه دیجیتال برای ارسال و دریافت اطلاعات استفاده کرده اید، از یک API استفاده کرده اید. توسعه دهندگان API ایجاد می کنند تا کاربران بتوانند با داده های برنامه های خود تعامل داشته باشند.
ایجاد یک REST API یک راه راحت برای به اشتراک گذاری اطلاعات است. API های REST استانداردهایی را برای تنظیم اشتراک داده بین دستگاه ها تعریف کرده اند. برای درک نحوه عملکرد REST API ها، می توانید یکی از آن ها را از ابتدا بسازید.
شما می توانید از چارچوب Django REST برای ساخت API REST استفاده کنید و از آن برای نمایش داده ها از پایگاه داده استفاده کنید.
استفاده از جنگو با REST API
می توانید از REST API برای واکشی داده های ساختاریافته از طریق HTTP استفاده کنید. مانند بسیاری از زبان ها و فریم ورک ها، جنگو به شما امکان می دهد API خود را بسازید و دیگران را مصرف کنید.
همچنین باید موارد زیر را از قبل نصب کرده باشید:
- آخرین نسخه پایتون.
- آخرین نسخه pip.
- Pipenv (اگرچه در صورت تمایل می توانید از venv استفاده کنید.)
- آخرین نسخه جنگو.
هنگامی که تمام نرم افزارهای ضروری را نصب کردید، آماده شروع هستید.
1. Django REST Framework را نصب کنید
چارچوب Django REST یک جعبه ابزار قدرتمند است که می توانید از آن برای ساخت و پیکربندی API های وب استفاده کنید. ویژگیهای قابل تنظیم آن، آن را به یک انتخاب محبوب برای ساخت APIهای REST تبدیل میکند.
می توانید فریم ورک Django REST را با دستور زیر نصب کنید:
pipenv install djangorestframework
2. یک برنامه جنگو ایجاد کنید
دستورالعمل های زیر نحوه ایجاد یک برنامه غذایی برای جمع آوری نام و توضیحات غذاهای محبوب کنیایی را توضیح می دهد. API درخواستهایی را از یک پایگاه داده واکشی میکند تا کاربران را قادر به تعامل با آن دادهها کند.
برنامه های جنگو مجهز به پایگاه داده SQLite هستند، بنابراین نیازی به نصب پایگاه داده دیگری ندارید.
برای ایجاد اپلیکیشن جنگو ابتدا پروژه ای به نام غذا با دستور زیر ایجاد کنید:
django-admin startproject food
بعد، یک برنامه جنگو به نام kenyanfood ایجاد کنید:
django-admin startapp kenyanfood
3. تنظیمات پروژه برنامه را ثبت کنید
برنامه kenyanfood را در تنظیمات پروژه در آرایه INSTALLED APPS ثبت کنید. اگر این مرحله را رد کنید، جنگو برنامه را تشخیص نخواهد داد. همچنین چارچوب Django REST را در همان تنظیمات ثبت کنید:
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'kenyanfood',
'rest_framework',
]
4. URL های برنامه را ثبت کنید
نشانیهای اینترنتی برنامه kenyanfood را در فایل urls.py پروژه همانطور که در زیر نشان داده شده است، ثبت کنید:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('kenyanfood.urls')),
]
5. یک View برای API ایجاد کنید
یک نمای ساختگی در فایل views.py برنامه ایجاد کنید تا برنامه خطا ایجاد نکند. ابتدا شی Response و @apiview decorator را از فریم ورک Django REST وارد کنید.
Response به بازگشت داده های استریل شده در قالب JSON کمک می کند در حالی که @apiview API را نمایش می دهد.
from django.shortcuts import render
from rest_framework.response import Response
from rest_framework.decorators import api_view
# Create your views here.
@api_view(['GET'])
def getFood(request):
return Response()
6. یک مسیر URL برای برنامه ایجاد کنید
یک مسیر URL برای نمای API که ایجاد کردید ایجاد کنید. این نقطه پایانی دادههای kenyanfood را نمایش میدهد.
from django.urls import path
from . import views
from django.conf import settings
urlpatterns = [
path('', views.getFood),
path('post/', views.postFood),
]
7. یک مدل برای برنامه ایجاد کنید
کلاس مدل برنامه Food نام دارد. می بایست شبیه به این باشه:
from django.db import models
# Create your models here.
class Food(models.Model):
name = models.CharField(max_length=200)
description = models.CharField(max_length=500)
مطابق شکل زیر مدل را در فایل app admin.py ثبت کنید:
from django.contrib import admin
from .models import Food
# Register your models here.
admin.site.register(Food)
8. مهاجرت انجام دهید
سپس، برنامه را برای ایجاد جداول در پایگاه داده SQLite منتقل کنید. با استفاده از دستور زیر می توانید این کار را انجام دهید:
python manage.py makemigrations kenyanfood
در مرحله بعد، این مهاجرت ها را با اجرای این دستور اعمال کنید:
python manage.py migrate
یک مهاجرت موفق به شکل زیر خواهد بود:
انتقال موفقیت آمیز به این معنی است که پایگاه داده جداول را برای برنامه kenyanfood ایجاد کرده است.
9. داده ها را به پایگاه داده اضافه کنید
از رابط کاربری گرافیکی مدیریت جنگو برای وارد کردن داده ها به پایگاه داده استفاده کنید. ادمین جنگو یک رابط عالی برای تجسم و مدیریت داده های برنامه شما دارد.
همچنین، میتوانید از پوسته پایتون در خط فرمان برای وارد کردن دستی دادهها در پایگاه داده استفاده کنید. در این راهنما از رابط مدیریت جنگو استفاده خواهید کرد.
برای تنظیم Django admin از دستور زیر استفاده کنید:
python manage.py createsuperuser
وقتی از شما خواسته شد، نام کاربری، ایمیل و رمز عبور خود را وارد کنید. سپس می توانید با استفاده از لینک زیر صفحه مدیریت را باز کنید:
http://127.0.0.1:8000/admin/
صفحه ورود را مشاهده خواهید کرد:
پس از ورود به سیستم، رابط مدیریت جنگو را با مدل گروه ها و کاربران مشاهده خواهید کرد. این هر دو برای احراز هویت هستند. مدل غذا در بخش زیر آمده است.
می توانید از صفحه مدیریت، اقلام غذایی را از پایگاه داده اضافه و حذف کنید. برخی از غذاهای لذیذ کنیایی مانند Ugali، Pilau و Chai را به پایگاه داده اضافه کنید.
اکنون که پایگاه داده دارای داده است، API را ایجاد کنید
10. مدل را سریال کنید
سریالسازها مدلهای پیچیده جنگو را به اشیاء JSON تبدیل میکنند و باعث میشوند دادهها به راحتی در API خوانده شوند. سریال سازی داده ها را در API قابل خواندن تر می کند.
یک فایل جدید در برنامه به نام serializer.py ایجاد کنید
from rest_framework import serializers
from .models import Food
class FoodSerializer(serializers.ModelSerializer):
class Meta:
model=Food
fields=('name','description')
شما ماژول serializers را از بسته rest_framework وارد میکنید و یک کلاس FoodSerializer ایجاد میکنید که از کلاس ModelSerializer به ارث میرسد.
سپس، مدل غذایی را که میخواهید سریالسازی کنید و فیلدهایی را که میخواهید به API اضافه کنید، مشخص کنید.
11. View را به روز کنید
بعد، نمای API را با مدلهای سریالساز و غذا بهروزرسانی کنید.
ابتدا یک متد GET برای بازیابی همه داده ها از پایگاه داده با تابع ()Food.Objects.all تعریف کنید. سپس داده ها را سریال کنید و به عنوان پاسخ در قالب JSON برگردانید.
from django.shortcuts import render
from rest_framework.response import Response
from rest_framework.decorators import api_view
from .models import Food
from .serializer import FoodSerializer
# Create your views here.
@api_view(['GET'])
def getFood(request):
food = Food.objects.all()
serializer = FoodSerializer(food, many=True)
return Response(serializer.data)
سپس به لینک URL سرور بروید:
https://127.0.0.1:8000/
API را خواهید دید که داده ها را از پایگاه داده نمایش می دهد:
تبریک میگوییم، شما یک REST API ایجاد کردهاید!
12. اضافه کردن داده ها با روش POST
تست کنید که آیا می توانید از REST API برای افزودن داده به پایگاه داده استفاده کنید یا خیر.
ابتدا یک متد POST در view تعریف کنید.
@api_view(['POST'])
def postFood(request):
serializer = FoodSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
سپس، یک مسیر در برنامه urls.py اضافه کنید تا یک نقطه پایانی برای عملکرد API POST ایجاد کنید.
urlpatterns = [
path('',views.getFood),
path('post/',views.postFood),
]
بعد، به این URL بروید:
https://127.0.0.1:8000/post
نقطه پایانی POST را خواهید دید. داده ها را با فرمت JSON در قسمت Content به پایگاه داده اضافه کنید و روی دکمه POST کلیک کنید. به عنوان مثال، یک ماده غذایی جدید با این ساختار اضافه کنید:
{ "name":"Maziwa mala", "description":"Sour milk" }
داده ها را با رنگ قرمز با فرمت JSON خواهید دید.
اکنون، اگر به نقطه پایانی GET http://127.0.0.1:8000/ برگردید، غذای “Maziwa mala” را خواهید دید و توضیحات آن اضافه شده است.
اکنون یک REST API دارید که می تواند موارد را به برنامه نمایش داده و به آن اضافه کند. در مورد آزمایش با سایر روش های CRUD چطور؟ کار با روش های UPDATE و DELETE عملکرد REST API شما را افزایش می دهد.
چگونه با Django یک REST API ایجاد کنیم
اکنون می توانید یک REST API با استفاده از جنگو ایجاد کنید. ابتدا یک برنامه با یک مدل ایجاد کنید، داده ها را سریال کنید و یک تابع view ایجاد کنید. سپس، نقاط پایانی URL را برای تجسم داده ها در قالب JSON قرار دهید.
ساختن API های REST با چارچوب Django REST یک راه راحت برای به اشتراک گذاری داده ها و ارائه تجربه مشتری عالی به کاربران است.