Kreye yon API ak Django Rest Framework
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 fichyesettings.py
la.INSTALLED_APPS = [ ... 'rest_framework', ]
Answit nap kreye yon nouvo fichye Python ki pote non
views.py
epi nap mete l anndan sou-dosyblog_api
a, akotesettings.py
akurls.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'])