Kreye yon API ak Django Rest Framework

Dènye mizajou: 18 Jan. 2024 11:27 a.m.
Tag :
Reading Duration : 0:15:00
Vizyalizasyon : 37
Disponib an : Kreyòl Ayisyen

API vle di Application Programming Interface. Zouti sa pèmèt ou kapab fè kominikasyon ant 2 oubyen plizyè pwogram.

REST li menm ki vle di REpresentational State Transfer, se jis yon konsèp oubyen yon stil achitekti pou distribisyon ki ap fèt sou yon sistèm. Devlopè API jis chwazi swiv règ yo.

Donk nenpòt sèvè wèb ki swiv achitekti REST la, kapab pote non REST API

Nan REST API, gen plizyè tip rekèt HTTP ke w dwe konnen:

  • GET : Pou w rekipere resous
  • POST: Pou w soumèt done sou yon API
  • PUT: Pou w modifye entegralman
  • PATCH: Pou w modifye patyèlman
  • DELETE: Pou w efase

Ak plizyè lòt ankò. Chak metòd sa yo, defini tip rekèt nou vle fè sou yon API a.

Ou kapab fè yon API ak nenpòt langaj pwogramasyon. Nan titoryèl sa, mwen pral aprann ou kreye yon API ak langaj Python kote nou pral itilize Django (Yon Framework pou wèb) + Rest Framework (Libreri pou kreye API) ki baze sou Python, pou n founi kontni nan fòma JSON, kote nenpot lòt pwogram kapab eksplwate resous yo.

Enstale Python

Si w pa gen Python enstale sou òdinatè ou, se moman pou w enstale li. Ale sou sit python.org a, epi telechaje vèsyon ki konpatib pou òdinatè ou a.

Yon fwa ke w fin enstale li, nou pral kreye premye pwojè nou ki ap rele blog_api.

Kreye anviwònman vityèl pou travay

Avan menm ke w enstale Django, gen yon zouti ki vrèman enpòtan ki se yon anviwònman vityèl (Virtual Environnement) ki toujou abreje pa _virtualenv_.

  • Pwojè A, gen _virtualenv_ pa li, ki gen tout lojisyèl pa li, pwòp vèsyon ke li ta bezwen.
  • Pwojè B, gen _virtualenv_ pa li, ki gen tout lojisyèl pa li, pwòp vèsyon ke li bezwen.

Pou w kòmanse, pozisyone w nan chemen ou vle travay la, tankou sou Windows li ka C:\Users\Lemayzeur\projects, oubyen linux ou Mac /home/lemayzeur/projects.

Aprè sa, jis fè

python  -m venv env

kote env se non anviwònman vityèl ou a, oubyen sou Linux oubyen Mac

python3  -m venv env

Lè w fin enstale li, fòk ou aktive l, pou tout enstalasyon ou pral fè yo, fèt nan anviwònman sa. Pou Windows, w ap jis fè env\Scripts\activate oubyen sou Linux oubyen Mac, w ap fè source env/bin/activate.

Fòk ou wè devan chemen an, non anviwònman nan mitan parantèz. Pa ekzanp sou Linux oubyen Mac:

(env) lemayzeur@lemayzeur:~/projects/ $

Sou Windows:

(env) C:\Users\Lemayzeur\projects

Pou w dezaktive anviwònman vityèl la, jis tape deactivate nan konsòl la.

Enstale Django + Django Rest Framework

Plase w nan anndan dosye nou te kreye a, epi aktive anviwònman.

Yon fwa ou fin plase w nan chemen sa, wap tape kòmand

pip install django

Django se yon libreri ki sèvi nan back-end yon aplikasyon wèb, ki la pou kreye REST API ak NodeJS.

pip install djangorestframework

django rest framework li menm, se yon libreri ki pral la, pou relanse sèvè nou an, san nou pa bezwen relanse l pou kont nou. Depi nou anrejistre nenpòt chanjman nan fichye sèvè nou an, nodemon ap tou relanse tout bagay.

Kreye pwojè

Pou w kreye pwojè a, nou ap ouvri tèminal nou, oubyen CMD(Pou Windows). Navige nan chemen kote w te kreye projè a

cd /chemen/kote/pwojè_a

Epi tape kòmand sa

django-admin startproject blog_api

Nap remake kèk dosye ak fichye kreye nan pwojè a, konsa:

blog_api / 
-- blog_api /
-- | -- | settings.py
-- | -- | urls.py
-- | -- | wsgi.py
-- | manage.py

Lansman sèvè

Yon REST API se jis yon aplikasyon wèb ke nou kreye. Se yon aplikasyon wèb back-end, ki obeyi ak yon achitekti espesifik. Donk pou n ka distenge l de yon aplikasyon wèb òdinè, nou fèl pote non API.

Nou pral lanse sèvè a, pou nenpòt moun ka vizyalize kontni nap founi nan aplikasyon sa nou ap konstwi a.

Pou n lanse sèvè a, nap plase nou anndan pwojè nou kreye ak Django a nan tèminal la, epi nap fè :

python manage.py runserver 8000

Epi ouvri nenpòt navigatè, pou w lanse sit wèb ou a nan lyen rasin nan ki se http://localhost:8000.

😎

Jan w ka remake, lè n vizite sit la, se sèlman yon paj Dango ki pou di n Byenvini. Se paske nou poko defini ki sa ki dwe afiche nan lyen sa yo.

Kreye premye endpoint

Endpoint se yon mo ki itilize pou defini lyen nan yon API. Nou pral kreye premye lyen nou nan sèvè nou an.

ATANSYON: Pa bliye ajoute restframework anndan rest_framework anndan fichye settings.py la.

INSTALLED_APPS = [
    ...
    'rest_framework',
]

Answit nap kreye yon nouvo fichye Python ki pote non views.py epi nap mete l anndan sou-dosy blog_api a, akote settings.py ak urls.py la.

Anndan l nap kreye fonksyon ki pral relye ak endpoint nou an:

from rest_framework.decorators import api_view
from rest_framework.response import Response

@api_view(['GET'])
def hello(request):
  return Response("Hello! API a OK")

Epi anndan fichye urls.py la, nap relye chemen an ak fonksyon sa:

urlpatterns = [
  path("", hello),
]

Jan w ka remake, nou ajoute yon premye endpoint sou chemen "" ki vle di rasin sit la.

Kounya lè nou revizite sit la, nap jwenn kontni nou voye ale nan repons lan.

😎

Ou kreye yon API wi la. Pa gen anyen ki konplike.

Ann ajoute plis endpoint toujou:

from rest_framework.decorators import api_view
from rest_framework.response import Response

@api_view(['GET'])
def hello(request):
  return Response("Hello! API a OK")

# Dezyèm endpoint nan /posts
@api_view(['GET', 'POST'])
def posts(request):
  if request.method == 'GET':
    posts = [
      {"tit": "Atik1"},
      {"tit": "Atik2"},
      {"tit": "Atik3"},
    ]
    return Response(posts)
  elif request.method == 'POST':
    # tretman sou done ki soumèt yo
    # ....          
    return Response("Kreye yon post")

Epi nou ap modifye urls.py la nan sans lan:

urlspatterns = [
  path("", hello),
  path("posts/", posts),
]

Nou ajoute yon dezyèm endpoint, kote nou retounen yon tablo objè nan repons lan.

Ou ka vizite http://localhost:8000/posts/ pou w ka teste si repons lan afiche nòmalman.

Menm fonksyon sa jere pou 2 metòd HTTP sou /posts. Gen youn ki se GET, lòt la se POST. Menm si yo gen menm lyen, men yo pa gen metòd rekèt. Se sak fè nou kondisyon sa anndan fonksyon an.

Lè w vizite lyen sa nan navigatè a, se yon rekèt GET navigatè a toujou fè. Si w vle simile yon rekèt POST, ou ka enstale kèk zouti tankou Postman oubyen kèk ekstansyon VSCode tankou: Thunder Client, REST Client


Se te yon plezi pou m te montre w kòman w ka kreye yon senp API ak Django + Rest Framework. Gen plis bagay nou te ka fè toujou.

Nou ka ajoute pou lòt metòd yo, tankou @api_view(['GET']), @api_view(['GET', 'POST']), @api_view(['GET', 'PUT'])