Django For ApisoneCapter
Django For ApisoneCapter
.روﻧﺪ ﭼﺎپ و ﻧﺸﺮ ﺗﮑﯿﻪ ﭼﺎپ و ﻧﺸﺮ ﻋﻤﻞ ﭼﺎپ و ﻧﺸﺮ در ﺣﺎل ﭘﯿﺸﺮﻓﺖ ﮐﺘﺎب
ﺑﺎ اﺳﺘﻔﺎده از اﺑﺰار ﺑﺴﯿﺎر ﺳﺒﮏ وزن و و ﺑﺴﯿﺎری از ﺗﮑﺮارﻫﺎ ﺑﻪ ﺧﻮاﻧﻨﺪه ﺑﺎزﺧﻮرد ﻣﺤﻮری ﺗﺎ زﻣﺎﻧﯽ ﮐﻪ ﺷﻤﺎ در
.ﺣﻖ ﮐﺘﺎب و اﯾﺠﺎد ﮐﺸﺶ ﻫﻨﮕﺎﻣﯽ ﮐﻪ ﺷﻤﺎ اﻧﺠﺎم دﻫﺪ
Williamﭽﻨﯿﻦ ﺗﻮﺳﻂ
ﻫﻤ وﯾﻨﺴﻨﺖ S.
ﺟﻨﮕﻮ ﺑﺮای ﻣﺒﺘﺪﯾﺎن
ﻣﻘﺪﻣﻪ 1
ﻞ1
ﺼ:Web
ﻓ Api 6
آدرس 7
ﺑﻘﯿﻪ 15
APIﺎﻞﯾ 2
ﺖو :ﮐﺘﺎﺑﺨﺎﻧﻓﻪﺼﺳ 17
Djangoﺳﻨﺘﯽ 17
ﻣﻄﺎﻟﺐ
Admin 25
Views 29
آدرس 30
آدرس 37
Views 38
Serializers 39
ﺣﻠﻘﻪ 40
ﻞ3
ﺼ:Todo
ﻓ API 44
ﻣﺪل 47
ﭼﺎرﭼﻮب Django REST 51
آدرس 53
Serializers 54
Views 56
APIﻣﺼﺮف 57
آزﻣﻮن 63
ﻧﺘﻴﺠﻪ ﮔﻴﺮی 64
ﻞ4
ﺼ:Todo
ﻓ Front-endواﮐﻨﺶ ﻧﺸﺎن ﻣﯽ دﻫﻨﺪ 66
Nodeﻧﺼﺐ 66
ﻧﺼﺐ واﮐﻨﺶ ﻧﺸﺎن ﻣﯽ دﻫﻨﺪ 67
ﺳﺎﺧﺘﮕﯽ داده ﻫﺎ 69
ﻣﻄﺎﻟﺐ
5گ APIو
ﻞﺑﻼﺼﻓ: 79
ﻣﺪل 80
آزﻣﻮن 84
Serializers 89
Views 91
6ﻮز
ﻓﺼ:ﻞﻣﺠ 97
AllowAny 105
ﺖﻞ ﮐﺎ7رﺑﺮ
:اﺣﺮاز ﻫﻮﻓﯾﺼ 117
-AuthاﺳﺘﺮاﺣﺖDjango- 128
ﻣﻄﺎﻟﺐ
ﻧﺸﺎﻧﻪ 139
ﻞ8
ﺼ:Viewsets
ﻓ و روﺗﺮ 147
Viewsets 153
روﺗﺮ 154
ﻣﺴﺘﻨﺪات 165
ﺑﺎ ﺗﮑﺒﺮ راه رﻓﺘﻦ Django REST 171
ارﺗﺒﺎط ﻣﺴﺘﻘﯿﻢ ﺑﺎ ﯾﮑﺪﯾﮕﺮ اﺳﺖ .و در ﺣﺎﻟﯽ ﮐﻪ راه ﻫﺎی ﻣﺘﻌﺪد وﺟﻮد دارد ﺑﺮای ﺳﺎﺧﺖ
ﻫﺎ–ﮐﻪ اﺟﺎزه ﻣﯽ دﻫﺪ ﺗﺎ ﺑﺮای اﻧﺘﻘﺎل داده ﻫﺎ ﺑﺮ روی ﺷﺒﮑﻪ ﺟﻬﺎﻧﯽ وب در ﺣﺎل API web Apiﯾﮏ
( ﺷﺪت ﺳﺎﺧﺖ ﯾﺎﻓﺘﻪ در آرام ( اﻟﮕﻮی .
از اﻓﺰاﯾﺶ RESTful web Apiدر اﯾﻦ ﮐﺘﺎب ﺑﻪ ﺷﻤﺎ ﺧﻮاﻫﺪ آﻣﻮﺧﺖ ﮐﻪ ﭼﮕﻮﻧﻪ ﺑﻪ ﺳﺎﺧﺖ ﭼﻨﺪﯾﻦ
.ﭼﺎرﭼﻮب اﺳﺖ Django RESTو Djangoﭘﯿﭽﯿﺪﮔﯽ از اﺑﺘﺪا ﺑﺎ اﺳﺘﻔﺎده از
ﭘﯿﺶ ﻧﯿﺎزﻫﺎ
اﮔﺮ ﺷﻤﺎ ﺑﺎ ﻧﺎم ﺗﺠﺎری ﺟﺪﯾﺪ ﺑﻪ ﺗﻮﺳﻌﻪ وب ﺑﺎ ﺟﻨﮕﻮ ﻣﻦ ﭘﯿﺸﻨﻬﺎد ﻣﯽ ﮐﻨﻢ اول ﻣﻦ ﺧﻮاﻧﺪن
ﮐﺘﺎب ﻗﺒﻠﯽ ﺟﻨﮕﻮ ﺑﺮای ﻣﺒﺘﺪﯾﺎن اول ﭼﻨﺪ ﻓﺼﻞ در دﺳﺘﺮس ﻫﺴﺘﻨﺪ ﺑﻪ ﺻﻮرت راﯾﮕﺎن .
آﻧﻼﯾﻦ و ﭘﻮﺷﺶ ﻣﻨﺎﺳﺐ راه اﻧﺪازی ﯾﮏ ﺑﺮﻧﺎﻣﻪ و ﯾﮏ ﺑﺮﻧﺎﻣﻪ,
ﺳﺎﯾﺖ .ﺗﻤﺎم ﻃﻮل ﻧﺴﺨﻪ ﻋﻤﯿﻖ ﺗﺮ ﻣﯽ رود و ﭘﻮﺷﺶ ﻣﯽ دﻫﺪ وب ﺳﺎﯾﺖ ﺑﺎ اﺷﮑﺎل و
ﺣﺴﺎب ﻫﺎی ﮐﺎرﺑﺮی و ﻫﻤﭽﻨﯿﻦ ﺑﻪ ﻋﻨﻮان ﯾﮏ ﺗﻮﻟﯿﺪ-آﻣﺎده ﺳﺎﯾﺖ اﺳﺖ ﮐﻪ اﻣﮑﺎﻧﺎت ﺳﻔﺎرﺷﯽ
ﻣﻘﺪﻣﻪ 2
ﻫﻤﭽﻨﯿﻦ ﺗﻮﺻﯿﻪ ﻣﯽ ﺷﻮد ﮐﻪ ﺧﻮاﻧﻨﺪﮔﺎن ﺑﺎﯾﺪ ﯾﮏ داﻧﺶ ﭘﺎﯾﻪ از ﭘﺎﯾﺘﻮن ﺧﻮد را .واﻗﻌﺎ
ﺳﺎل ﻃﻮل ﻣﯽ ﮐﺸﺪ اﻣﺎ ﺑﺎ ﻓﻘﻂ ﯾﮏ ﮐﻤﯽ از داﻧﺶ ﺷﻤﺎ ﻣﯽ ﺗﻮاﻧﯿﺪ ﺷﯿﺮﺟﻪ رﻓﺘﻦ در ﺳﻤﺖ راﺳﺖ mastering Python
.و ﺷﺮوع ﺑﻪ ﺳﺎﺧﺘﻦ ﭼﯿﺰﻫﺎی
2005
گﻞلﯾﮏ ﺑﺰر
ﺖ دﺷرﺎﻣﺳﺎ
بﺘﺸﺳﺮﺎﯾﺷﺪ
ی ﺑاﺎزر وﻣﻨ
ﺴوﯿﻟﺎﯿرﻦ
ﺟﻨنﮕزﻮﻣﺑﺎﺮانیﺑ ا
و در آ
ﺷﺎﻣﻞ ﻣﺪل ﻫﺎی ﭘﺎﯾﮕﺎه داده ﻫﺎ و ﻧﻤﺎﯾﺶ ﻫﺎ " "back-endﯾﮑﭙﺎرﭼﻪ ﮐﺪﻫﺎی .اﯾﻦ
ﻣﺴﻠﻤﺎ اﻏﻠﺐ اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد ﺑﻪ ﻋﻨﻮان Djangoاﻣﺮوز ﯾﮏ ﺑﻪ ﺟﺎی ﮐﺎﻣﻞ back-end API
!ﯾﮑﭙﺎرﭼﻪ راه ﺣﻞ وب ﺳﺎﯾﺖ در ﺷﺮﮐﺖ ﻫﺎی ﺑﺰرگ
ﺑﺎ اﯾﻦ ﻧﺴﺨﻬﻬﺎ ﮐﺎر ﮐﺎﻣﻼ Djangoﯾﮏ ﺳﻮال واﺿﺢ در اﯾﻦ ﻧﻘﻄﻪ اﺳﺖ ﮐﻪ "ﭼﺮا زﺣﻤﺖ؟" ﺳﻨﺘﯽ
web APIﺑﻪ ﺧﻮﺑﯽ ﺧﻮد را در آن و ﺗﺒﺪﯾﻞ ﺑﻪ ﯾﮏ ﺟﻨﮕﻮ ﺳﺎﯾﺖ ﺑﻪ ﯾﮏ ﻣﺎﻧﻨﺪ ﺑﺴﯿﺎری از اﺿﺎﻓﯽ
در (front-endﮐﺎر ﻣﯽ ﮐﻨﻨﺪ .ﺑﻪ ﻋﻨﻮان ﯾﮏ ﺗﻮﺳﻌﻪ دﻫﻨﺪه ﺷﻤﺎ ﺳﭙﺲ ﺑﻪ ﻧﻮﺷﺘﻦ اﺧﺘﺼﺎص داده ﺷﺪه در ﺟﻠﻮ
اﯾﻦ روﯾﮑﺮد ﺗﻘﺴﯿﻢ ﺧﺪﻣﺎت ﺑﻪ اﺟﺰای ﻣﺨﺘﻠﻒ راه اﺳﺖ ﮐﻪ ﺑﻪ ﻃﻮر ﮔﺴﺘﺮده
یان ﺷﻨﺎﺧﺘﻪ ﺷﺪه
ﺳﺮوﯾﺲ ﮔﺮا ﻣﺑﻌﻪﻤﺎﻋرﻨﻮ .
ﻣﻌﻠﻮم ﻣﯽ ﺷﻮد ﺑﺎ اﯾﻦ ﺣﺎل ﮐﻪ ﭼﻨﺪﯾﻦ ﻣﺰﯾﺖ ﺑﺮای ﺟﺪا ﮐﺮدن ﺑﺨﺶ ﺟﻠﻮﯾﯽ
back-endاز آﻧﺠﺎ ﮐﻪ ﯾﮏ " "future-proofاز ﻋﻘﺐ ﭘﺎﯾﺎن .آن اﺳﺖ ﮐﻪ ﻣﺴﻠﻤﺎ ﺧﯿﻠﯽ ﺑﯿﺸﺘﺮ
ﻣﻘﺪﻣﻪ 3
ﻣﯽ ﺗﻮان ﻣﺼﺮف ﺷﺪه ﺗﻮﺳﻂ API ﺟﺎوا اﺳﮑﺮﯾﭙﺖ ﺟﻠﻮﯾﯽ .ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻧﺮخ ﺳﺮﯾﻊ ﺗﻐﯿﯿﺮ در
ﻣﯽ ﺗﻮاﻧﯿﺪ ﭘﺸﺘﯿﺒﺎﻧﯽ از ﭼﻨﺪﯾﻦ ﺟﺒﻬﻪ ﺑﻪ ﭘﺎﯾﺎن ﻣﯽ رﺳﺪ ﻧﻮﺷﺘﻪ ﺷﺪه در زﺑﺎن ﻫﺎی ﻣﺨﺘﻠﻒ و APIدوم ﯾﮏ
ﭼﺎرﭼﻮب .در ﻧﻈﺮ ﺑﮕﯿﺮﯾﺪ ﮐﻪ ﺟﺎوا اﺳﮑﺮﯾﭙﺖ اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد ﺑﺮای وب ﺳﺎﯾﺖ ﻣﻘﺪم-ﺑﻪ ﭘﺎﯾﺎن ﻣﯽ رﺳﺪ در ﺣﺎﻟﯽ ﮐﻪ ﺑﺮﻧﺎﻣﻪ ﻫﺎی اﻧﺪروﯾﺪ
Swiftﻧﯿﺎز ﺑﻪ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ iOSﻧﯿﺎز ﺑﻪ زﺑﺎن ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺟﺎوا و ﺑﺮﻧﺎﻣﻪ ﻫﺎی
زﺑﺎن .ﺑﺎ ﯾﮏ ﺳﻨﺘﯽ ﯾﮑﭙﺎرﭼﻪ روﯾﮑﺮد ﯾﮏ ﺟﻨﮕﻮ وب ﺳﺎﯾﺖ ﻧﻤﯽ ﺗﻮاﻧﺪ ﺣﻤﺎﯾﺖ
داﺧﻠﯽ ﻫﺮ ﺳﻪ ﻣﯽ ﺗﻮاﻧﻨﺪ ﺑﺎ APIاﯾﻦ ﺟﺒﻬﻪ ﻫﺎی ﻣﺨﺘﻠﻒ ﺑﻪ ﭘﺎﯾﺎن ﻣﯽ رﺳﺪ .اﻣﺎ ﺑﺎ ﯾﮏ
!ﻫﻤﺎن زﻣﯿﻨﻪ ﭘﺎﯾﮕﺎه داده ﺑﻪ ﻋﻘﺐ ﭘﺎﯾﺎن
روش اول اﯾﻦ اﺳﺖ ﮐﻪ آن ﻧﯿﺎز ﺑﻪ ﺗﻨﻈﯿﻤﺎت ﺑﯿﺸﺘﺮ API-ﻋﻤﺪه ﻧﺰوﻟﯽ ﺑﻪ
از ﺳﻨﺘﯽ ﺟﻨﮕﻮ .اﻣﺎ ﺑﻪ ﻋﻨﻮان ﻣﺎ ﻣﯽ ﺑﯿﻨﯿﻢ در اﯾﻦ ﮐﺘﺎب ﻓﻮق اﻟﻌﺎده
.ﭼﺎرﭼﻮب ﮐﺘﺎﺑﺨﺎﻧﻪ ﺣﺬف ﺑﺴﯿﺎری از اﯾﻦ ﭘﯿﭽﯿﺪﮔﯽ اﺳﺖ Django REST
وﺟﻮد دارد ﺻﺪﻫﺎ و ﺻﺪﻫﺎ ﻧﻔﺮ از ﺑﺮﻧﺎﻣﻪ ﻫﺎی ﺷﺨﺺ ﺛﺎﻟﺚ در دﺳﺘﺮس اﺳﺖ ﮐﻪ اﺿﺎﻓﻪ ﮐﺮدن ﺑﯿﺸﺘﺮ و
ﻣﻘﺪﻣﻪ 4
.آن اﺳﺖ ﮐﻪ ﻗﺪﯾﻤﯽ ﮐﺎﻣﻞ از وﯾﮋﮔﯽ ﻫﺎی ﻗﺎﺑﻞ ﺗﻨﻈﯿﻢ ازﻣﺎﯾﺸﯽ و ﺑﺴﯿﺎر ﺧﻮﺑﯽ ﻣﺴﺘﻨﺪ ﺷﺪه اﺳﺖ
ﺳﻨﺘﯽ ﮐﻨﻮاﻧﺴﯿﻮن ﮐﻪ ﺑﺎﻋﺚ ﻣﯽ ﺷﻮد Djangoآن را ﻧﯿﺰ ﺑﻪ ﺻﻮرت ﻫﺪﻓﻤﻨﺪ ﺗﻘﻠﯿﺪ ﺑﺴﯿﺎری از
ﯾﮏ Python,ﯾﺎدﮔﯿﺮی آن ﺑﺴﯿﺎر ﺳﺮﯾﻊ ﺗﺮ اﺳﺖ .و در آن ﻧﻮﺷﺘﻪ ﺷﺪه اﺳﺖ در زﺑﺎن ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ
.ﻓﻮق اﻟﻌﺎده ﻣﺤﺒﻮب و در دﺳﺘﺮس زﺑﺎن
ﭼﺎرﭼﻮب ﻣﻨﻄﻘﯽ ﺑﻌﺪی Django RESTﺳﭙﺲ آﻣﻮزش Djangoاﮔﺮ ﺷﻤﺎ در ﺣﺎل ﺣﺎﺿﺮ ﻣﯽ داﻧﯿﻢ
ﮔﺎم .ﺑﺎ ﯾﮏ ﻣﻘﺪار ﺣﺪاﻗﻞ از اﯾﻦ ﮐﺪ ﻣﯽ ﺗﻮاﻧﯿﺪ ﺗﺒﺪﯾﻞ ﻫﺮ ﻣﻮﺟﻮد ﺟﻨﮕﻮ
web API.ﺑﻪ ﯾﮏ
ﻣﻦ ﻧﻮﺷﺖ :اﯾﻦ ﮐﺘﺎب ﺑﻪ دﻟﯿﻞ وﺟﻮد ﻣﺘﻤﺎﯾﺰ ﮐﻤﺒﻮد ﻣﻨﺎﺑﻊ ﺧﻮب در دﺳﺘﺮس ﺑﺮای
ﭼﺎرﭼﻮب اﺳﺖ .اﯾﻦ ﻓﺮض ﺑﻪ ﻧﻈﺮ ﻣﯽ رﺳﺪ ﮐﻪ Django RESTﺗﻮﺳﻌﻪ دﻫﻨﺪﮔﺎن ﺟﺪﯾﺪ ﺑﻪ
اﺳﺘﺮاﺣﺖ و ﻣﺎﻧﻨﺪ آن .ﺳﻔﺮ ﺧﻮد ﻣﻦ , HTTP,ﻫﺮ ﮐﺲ در ﺣﺎل ﺣﺎﺿﺮ ﻣﯽ داﻧﺪ ﻫﻤﻪ ﭼﯿﺰ در ﻣﻮرد راﺑﻂ ﻫﺎی ﺑﺮﻧﺎﻣﻪ ﮐﺎرﺑﺮدی
ﻫﺎی ﻧﺎ اﻣﯿﺪ ﮐﻨﻨﺪه ﺑﻮد...و ﻣﻦ در ﺣﺎل ﺣﺎﺿﺮ ﻣﯽ داﻧﺴﺘﻢ ﮐﻪ ﺟﻨﮕﻮ ﺑﻪ ﺧﻮﺑﯽ Apiدر ﯾﺎدﮔﯿﺮی ﭼﮕﻮﻧﻪ ﺑﺮای ﺳﺎﺧﺖ وب ﺳﺎﯾﺖ
!ﺑﻪ اﻧﺪازه ﮐﺎﻓﯽ ﺑﺮای ﻧﻮﺷﺘﻦ ﯾﮏ ﮐﺘﺎب ﺑﺮ روی آن
.ﭼﺎرﭼﻮب اﺳﺖ Django RESTاﯾﻦ ﮐﺘﺎب راﻫﻨﻤﺎی ﻣﻦ آرزو ﻣﯽ ﮐﻨﻢ وﺟﻮد داﺷﺘﻪ و در ﻫﻨﮕﺎم ﺷﺮوع
HTTP.ﻞ 1آﻏﺎز ﻣﯽ ﺷﻮد ﺑﺎ ﯾﮏ ﻣﻘﺪﻣﻪ ﮐﻮﺗﺎه ﺑﻪ راﺑﻂ ﻫﺎی ﺑﺮﻧﺎﻣﻪ ﮐﺎرﺑﺮدی وب و ﭘﺮوﺗﮑﻞ
ﻓﺼ در
ﭼﺎرﭼﻮب ﺑﺎ ﺳﺎﺧﺘﻦ ﯾﮏ ﮐﺘﺎب ﺳﺎﯾﺖ و ﺳﭙﺲ اﺿﺎﻓﻪ ﮐﺮدن ﯾﮏ ﺑﻪ آن اﺳﺖ .ﺳﭙﺲ API
ﻣﻘﺪﻣﻪ 5
ﻧﺘﻴﺠﻪ ﮔﻴﺮی
ﺑﻪ ﻣﻌﻨﺎی واﻗﻌﯽ ﮐﻠﻤﻪ ﻧﺸﺴﺘﻪ در ﺑﺎﻻی ﻣﻮﺟﻮد ﻣﻌﻤﺎری ﺟﻬﺎن " "web APIﮐﺎر ﻣﯽ ﮐﻨﺪ .ﭘﺲ از ﻫﻤﻪ ﯾﮏ
.و ﺑﯿﺸﺘﺮ HTTP, IP/TCPﮔﺴﺘﺮده وب و ﻣﺘﮑﯽ ﺑﺮ ﯾﮏ ﻣﯿﺰﺑﺎن از ﻓﻦ آوری از ﺟﻤﻠﻪ
,ﻣﻨﺎﺑﻊ web Api: endpoints,در اﯾﻦ ﻓﺼﻞ ﻣﺎ ﺑﻪ ﺑﺮرﺳﯽ اﺻﻄﻼﺣﺎت ﭘﺎﯾﻪ از
و اﺳﺘﺮاﺣﺖ .ﺣﺘﯽ اﮔﺮ ﺷﻤﺎ در ﺣﺎل ﺣﺎﺿﺮ اﺣﺴﺎس راﺣﺘﯽ ﺑﺎ HTTPاﻓﻌﺎل ﮐﺪﻫﺎی وﺿﻌﯿﺖ HTTP
اﯾﻨﺘﺮﻧﺖ ﯾﮏ ﺳﯿﺴﺘﻢ ﺑﻪ ﻫﻢ ﭘﯿﻮﺳﺘﻪ ﺷﺒﮑﻪ ﻫﺎی ﮐﺎﻣﭙﯿﻮﺗﺮی اﺳﺖ ﮐﻪ وﺟﻮد داﺷﺘﻪ اﺳﺖ ﭘﺲ
1960 s
ﺣﺪاﻗﻞ اﻣﺎ اﯾﻨﺘﺮﻧﺖ اوﻟﯿﻪ اﺳﺘﻔﺎده ﺷﺪ و ﻣﺤﺪود ﺑﻪ .
ﺗﻌﺪادی از ﺟﺪا ﺷﺪه ﺷﺒﮑﻪ ﻫﺎی ﻋﻤﺪﺗﺎ دوﻟﺘﯽ و ﻧﻈﺎﻣﯽ و ﻋﻠﻤﯽ در ﻃﺒﯿﻌﺖ
داﻧﺸﮕﺎه ﻫﺎ ﺷﺪ و ﺑﺎ اﺳﺘﻔﺎده از اﯾﻨﺘﺮﻧﺖ ﺑﺮای ﺑﻪ اﺷﺘﺮاک ﮔﺬاﺷﺘﻦ اﻃﻼﻋﺎت .در اروﭘﺎ ﺑﺰرﮔﺘﺮﯾﻦ اﯾﻨﺘﺮﻧﺖ
ﮔﺮه واﻗﻊ ﺷﺪه ﺑﻮد در ﺳﺮن )ﺳﺎزﻣﺎن ﭘﮋوﻫﺸﻬﺎی ﻫﺴﺘﻬﺎی اروﭘﺎ( در ژﻧﻮ
ﻣﺮدم ﺑﻪ آن دﺳﺘﺮﺳﯽ دارﻧﺪ و ﯾﺎ ﺣﺘﯽ درک و ﭼﺮا از آن ﻣﻬﻢ اﺳﺖ .ﺗﻌﺪاد ﮐﻤﯽ
از اﯾﻨﺘﺮﻧﺖ ﮔﺮه ﺷﺪه ﺗﻤﺎم ﺗﺮاﻓﯿﮏ و ﮐﺎﻣﭙﯿﻮﺗﺮ ﺑﺎ اﺳﺘﻔﺎده از آن را در درﺟﻪ اول
.در درون ﻫﻤﺎن ﺷﺒﮑﻪ ﻫﺎی ﮐﻮﭼﮏ اﺳﺖ
ﻞ1
: Web
ﻓﺼ Api 7
1989ر
CERN,ﺪل ﻣﺤﻘﻖ د
ﺳﺎﻨ Timﯾﻐﯿﯿ
ﮏﺮ دادﻧرﺸﻤ Berners-Leeﻫ
ﯽﻤﮐﻪﻪ ﺗ ازﯾﻣﺎﻦﻧ اﺧﺘﺮاع
و ﻃﻠﯿﻌﻪ ﻣﺪرن در ﺷﺒﮑﻪ ﺟﻬﺎﻧﯽ وب اﺳﺖ .او ﺑﯿﻨﺶ ﺑﻮد ﮐﻪ اﯾﻦ HTTP
ﻣﻮﺟﻮد اﺑﺮﻣﺘﻦ ﺳﯿﺴﺘﻢ ﮐﻪ در آن ﻣﺘﻦ ﻧﻤﺎﯾﺶ داده ﺷﺪه ﺑﺮ روی ﺻﻔﺤﻪ ﻧﻤﺎﯾﺶ ﮐﺎﻣﭙﯿﻮﺗﺮ ﻫﺎی ﻣﻮﺟﻮد در ﻟﯿﻨﮏ
.ﻟﯿﻨﮏ( ﺑﻪ دﯾﮕﺮ اﺳﻨﺎد ﻣﯽ ﺗﻮاﻧﺪ ﻧﻘﻞ ﻣﮑﺎن ﮐﺮد و ﺑﺮ روی اﯾﻨﺘﺮﻧﺖ(
اﺧﺘﺮاع ﺧﻮد را اوﻟﯿﻦ اﺳﺘﺎﻧﺪارد ﺟﻬﺎﻧﯽ )Hypertext Transfer Protocol (HTTP
:راه ﺑﺮای ﺑﻪ اﺷﺘﺮاک ﮔﺬاری اﺳﻨﺎد از ﻃﺮﯾﻖ اﯾﻨﺘﺮﻧﺖ .آن را ﻃﻠﯿﻌﻪ ﻣﻔﻬﻮم ﺻﻔﺤﺎت وب
.ﻟﯿﻨﮏ ,ﻣﻨﺎﺑﻊ ,ﻣﺎﻧﻨﺪ ﺗﺼﺎوﯾﺮ ,ﺻﻮﺗﯽ و ﯾﺎ ﺗﺼﻮﯾﺮی URL,ﮔﺴﺴﺘﻪ اﺳﻨﺎد ﺑﺎ ﯾﮏ
اﻣﺮوز ﻫﻨﮕﺎﻣﯽ ﮐﻪ اﮐﺜﺮ ﻣﺮدم ﻓﮑﺮ ﻣﯽ ﮐﻨﻢ از "اﯾﻨﺘﺮﻧﺖ" آﻧﻬﺎ ﻓﮑﺮ ﻣﯽ ﮐﻨﻢ از ﺷﺒﮑﻪ ﺟﻬﺎﻧﯽ وب
اﺳﺖ ﮐﻪ در ﺣﺎل ﺣﺎﺿﺮ راه اﺻﻠﯽ ﮐﻪ ﻣﯿﻠﯿﺎردﻫﺎ ﻧﻔﺮ از ﻣﺮدم و ﮐﺎﻣﭙﯿﻮﺗﺮ ارﺗﺒﺎط
.آﻧﻼﯾﻦ
آدرس
ﺑﻪ ﯾﮏ URLدر ﺻﻔﺤﻪ اﺻﻠﯽ ﺷﻤﺎ ﺗﺎﯾﭗ ﮐﺎﻣﻞ آدرس Googleﻫﻨﮕﺎﻣﯽ ﮐﻪ ﺷﻤﺎ ﻣﯽ ﺧﻮاﻫﯿﺪ ﺑﺮای رﻓﺘﻦ ﺑﻪ
ﻣﺮورﮔﺮ وب اﺳﺖ .ﻣﺮورﮔﺮ ﺷﻤﺎ ﻣﯽ ﻓﺮﺳﺘﺪ و ﺳﭙﺲ درﺧﻮاﺳﺖ ﺧﻮد را از ﻃﺮﯾﻖ اﯾﻨﺘﺮﻧﺖ و ﺟﺎدوﯾﯽ
ﻣﺘﺼﻞ )ﻣﺎ ﭘﻮﺷﺶ آﻧﭽﻪ در واﻗﻊ اﺗﻔﺎق ﻣﯽ اﻓﺘﺪ در ﻣﺪت ﮐﻮﺗﺎﻫﯽ( ﺑﻪ ﯾﮏ ﺳﺮور ﮐﻪ در ﭘﺎﺳﺦ ﺑﺎ
.اﻃﻼﻋﺎت ﻣﻮرد ﻧﯿﺎز ﺑﺮای رﻧﺪر اﺻﻠﯽ ﮔﻮﮔﻞ را در ﻣﺮورﮔﺮ ﺧﻮد را
.ﭘﺎﺳﺦ HTTPدرﺧﻮاﺳﺖ و
داده ﺷﺪه ﻧﯿﺰ ﭼﻨﺪﯾﻦ اﺟﺰای ﮔﺴﺴﺘﻪ .ﺑﺮای ﻣﺜﺎل در ﻧﻈﺮ ﺑﮕﯿﺮﯾﺪ دوﺑﺎره URLدر ﯾﮏ
https://www.google.com ﺑﺨﺶ اول . https اﺷﺎره ﺑﻪ حﺘﻔﺎده ﻣﯽ ﺷﻮد .آن را ﻣﯽ ﮔﻮﯾﺪ
ﻃاﺮﺳ
ﻞ1
: Web
ﻓﺼ Api 8
ﻣﺮورﮔﺮ وب ﺑﺮای دﺳﺘﺮﺳﯽ ﺑﻪ ﻣﻨﺎﺑﻊ در ﻣﺤﻞ .ﺑﺮای ﯾﮏ وب ﺳﺎﯾﺖ اﯾﻦ اﺳﺖ ﮐﻪ ﺑﻪ ﻃﻮر ﻣﻌﻤﻮل
http ﯾﺎ https اﻣﺎ آن را ﻧﯿﺰ ﻣﯽ ﺗﻮاﻧﺪ ftp ﺑﺮای اﯾﻤﯿﻞ و ﻏﯿﺮه .ﺑﻌﺪی smtpﺑﺮای ﻓﺎﯾﻞ ﻫﺎی
ﺑﺨﺶ www.google.com اﺳﺖ URLﻧﺎم ﻣﯿﺰﺑﺎن ﯾﺎ ﻧﺎم واﻗﻌﯽ ﺳﺎﯾﺖ اﺳﺖ .ﻫﺮ
ﺑﺴﯿﺎری از ﺻﻔﺤﺎت وب ﻧﯿﺰ ﺣﺎوی اﺧﺘﯿﺎری ﺑرﯿاهﺶ از ﺣﺪ .اﮔﺮ ﺷﻤﺎ رﻓﺘﻦ ﺑﻪ ﺻﻔﺤﻪ اﺻﻠﯽ ﺑﺮای
در ﭘﺎﯾﺘﻮن https://www.python.org و ﺑﺎ ﮐﻠﯿﮏ ﺑﺮ روی ﻟﯿﻨﮏ ﺑﺮای ﺻﻔﺤﻪ "درﺑﺎره" ﺷﻤﺎ ﺧﻮاﻫﯿﺪ ﺑﻮد
ﻫﻨﮕﺎﻣﯽ ﮐﻪ ﻣﺎ ﻣﯽ داﻧﯿﻢ ﮐﻪ آدرس واﻗﻌﯽ از ﯾﮏ ﻣﻨﺒﻊ ﯾﮏ ﻣﺠﻤﻮﻋﻪ ﮐﺎﻣﻞ از ﻓﻦ آوری ﻫﺎی دﯾﮕﺮ
ﺑﺎﯾﺪ ﺑﻪ درﺳﺘﯽ ﮐﺎر )ﺑﺎ ﻫﻢ( ﺑﺮای اﺗﺼﺎل ﮐﻼﯾﻨﺖ ﺑﺎ ﺳﺮور و ﺑﺎرﮔﺬاری واﻗﻌﯽ
ﺻﻔﺤﻪ وب .اﯾﻦ اﺳﺖ ﮐﻪ ﺑﻪ ﻃﻮر ﮔﺴﺘﺮده ﺑﻪ ﻋﻨﻮان ﺳﻮﺋﯿﺖ procotolاﯾﻨﺘﺮﻧﺖ و ﺑﺎ وﺟﻮد ﺗﻤﺎم
ﮐﺘﺎب ﻫﺎی ﻧﻮﺷﺘﻪ ﺷﺪه در ﻓﻘﻂ در ﻣﻮرد اﯾﻦ ﻣﻮﺿﻮع .ﺑﺮای اﻫﺪاف ﻣﺎ ,اﻣﺎ ﻣﺎ ﻣﯽ ﺗﻮاﻧﯿﻢ ﭼﻮب ﺑﻪ ﮔﺴﺘﺮده
.اﺻﻮل
ﭼﻨﺪ ﭼﯿﺰ اﺗﻔﺎق ﻣﯽ اﻓﺘﺪ زﻣﺎﻧﯽ ﮐﻪ ﯾﮏ ﻧﻮع ﮐﺎرﺑﺮ https://www.google.com ﺑﻪ وب ﺳﺎﯾﺖ ﺧﻮد را
-ﻣﺮورﮔﺮ و ﺑﺎزدﯾﺪ را وارد ﮐﻨﯿﺪ .اوﻟﯿﻦ ﻣﺮورﮔﺮ ﻧﯿﺎز ﺑﻪ ﭘﯿﺪا ﮐﺮدن ﺳﺮور ﻣﻮرد ﻧﻈﺮ ﺑﺮﺧﯽ
ﮐﻪ در آن در ﭘﻬﻨﺎور اﯾﻨﺘﺮﻧﺖ اﺳﺖ .آن را ﺑﺎ اﺳﺘﻔﺎده از ﯾﮏ ﺑﺮای ﺗﺮﺟﻤﻪ )(DNS
ﺑﻪ ﯾﮏ " "google.comﻧﺎم داﻣﻨﻪ IPآدرس num-ﮐﻪ ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮد اﺳﺖ دﻧﺒﺎﻟﻪ ای از
ﺑﻪ ﻧﻤﺎﯾﻨﺪﮔﯽ از ﻫﺮ دﺳﺘﮕﺎه ﻣﺘﺼﻞ ﺑﻪ اﯾﻨﺘﺮﻧﺖ .ﻧﺎم داﻣﻨﻪ اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد bers
از " "google.comﺑﻪ دﻟﯿﻞ آن اﺳﺖ ﮐﻪ آﺳﺎن ﺗﺮ ﺑﺮای اﻧﺴﺎن ﺑﻪ ﯾﺎد داﺷﺘﻪ ﺑﺎﺷﯿﺪ ﯾﮏ ﻧﺎم داﻣﻨﻪ ﻣﺜﻞ
ﻣﺎﻧ.ﻨ"ﺪ " IP 172.217.164.68ﯾﮏ آدرس
ﻞ1
: Web
ﻓﺼ Api 9
ﺑﺮای ﯾﮏ داﻣﻨﻪ داده ﺷﺪه ﺑﻪ آن ﻧﯿﺎز دارد ﯾﮏ راه ﺑﺮای راه اﻧﺪازی IPﭘﺲ از اﯾﻦ ﻣﺮورﮔﺮ دارای آدرس
ﯾﮏ ﺳﺎزﮔﺎر ارﺗﺒﺎط ﺑﺎ ﺳﺮور ﻣﻮرد ﻧﻈﺮ .اﯾﻦ اﺗﻔﺎق ﻣﯽ اﻓﺘﺪ از ﻃﺮﯾﻖ Transmission
ﻓﺮاﻫﻢ ﻣﯽ ﮐﻨﺪ ﮐﻪ ﻗﺎﺑﻞ اﻋﺘﻤﺎد و دﺳﺘﻮر و ﺧﻄﺎ در ﺑﺮرﺳﯽ ﺗﺤﻮﯾﻞ )Control Protocol (TCP
اﺗﺼﺎل ﭘﺎراﻣﺘﺮ
ﻣﺸﺘﺮی ﻣﯽ ﻓﺮﺳﺘﺪ 3. اﺗﺼﺎل ACK ﺑﻪ ﺳﺮور ﺗﺎﯾﯿﺪ
اﯾﺠﺎد ﺷﺪه اﺳﺖ دو ﮐﺎﻣﭙﯿﻮﺗﺮ ﻣﯽ ﺗﻮاﻧﯿﺪ ﺷﺮوع ﺑﻪ ﺑﺮﻗﺮاری ارﺗﺒﺎط TCPﻫﻨﮕﺎﻣﯽ ﮐﻪ اﺗﺼﺎل
HTTP.از ﻃﺮﯾﻖ
اﻓﻌﺎل HTTP
و ﻫﻤﭽﻨﯿﻦ ﺑﻪ ﻋﻨﻮان ﯾﮏ ﻟﯿﺴﺖ از ﺗﺎﯾﯿﺪ اﻗﺪاﻣﺎت ) (URLﻫﺮ ﺻﻔﺤﻪ وب ﺷﺎﻣﻞ ﻫﺮ دو ﯾﮏ آدرس
ﻓﻌﻞ اﺳﺖ .ﺗﺎ ﮐﻨﻮن ﻣﺎ ﺑﻪ ﻃﻮر ﻋﻤﺪه در ﻣﻮرد ﮔﺮﻓﺘﻦ ﯾﮏ ﺻﻔﺤﻪ وب اﺳﺖ ,اﻣﺎ آن را ﻧﯿﺰ HTTPﺷﻨﺎﺧﺘﻪ ﺷﺪه ﺑﻪ ﻋﻨﻮان
.ﻣﻤﮑﻦ اﺳﺖ ﺑﺮای اﯾﺠﺎد ,وﯾﺮاﯾﺶ و ﺣﺬف ﻣﺤﺘﻮا
ﺳﺎﯾﺖ .ﭘﺲ از ورود ﺷﻤﺎ ﻣﯽ ﺗﻮاﻧﯿﺪ ﺟﺪول زﻣﺎﻧﯽ ﺧﻮد را اﯾﺠﺎد Facebookدر ﻧﻈﺮ ﺑﮕﯿﺮﯾﺪ
-Update-ﯾﮏ ﭘﺴﺖ ﺟﺪﯾﺪ و ﯾﺎ وﯾﺮاﯾﺶ/ﺣﺬف ﯾﮏ ﻣﻮﺟﻮد اﺳﺖ .اﯾﻦ ﭼﻬﺎر ﻋﻤﻠﯿﺎت اﯾﺠﺎد-ﺟﺰﺋﯿﺎت
ﺷﻨﺎﺧﺘﻪ ﺷﺪه در ﻣﺤﺎوره ﺑﻪ ﻋﻨﻮان ﺧﺎم ﻗﺎﺑﻠﯿﺖ و ﻧﺸﺎن دﻫﻨﺪه ﻗﺮﯾﺐ ﺑﻪ اﺗﻔﺎق Delete
.اﮐﺜﺮ اﻗﺪاﻣﺎت ﺻﻮرت ﮔﺮﻓﺘﻪ آﻧﻼﯾﻦ
ﭘﺮوﺗﮑﻞ ﺷﺎﻣﻞ ﺗﻌﺪادی از HTTP روش درﺧﻮاﺳﺖ ﮐﻪ ﻣﯽ ﺗﻮاﻧﺪ ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﮔﯿﺮد در ﺣﺎﻟﯽ ﮐﻪ
func-درﺧﻮاﺳﺖ اﻃﻼﻋﺎت از ﺳﺮور .ﭼﻬﺎر ﺷﺎﯾﻊ ﺗﺮﯾﻦ ﻧﻘﺸﻪ ﺧﺎم
ﻞ1
: Web
ﻓﺼ Api 10
ﻧﻤﻮدار
---- ----------
ﺑﺮای اﯾﺠﺎد ﻣﺤﺘﻮای ﺷﻤﺎ ﺑﺎ اﺳﺘﻔﺎده از ﭘﺴﺖ ﺑﺮای ﺧﻮاﻧﺪن ﻣﻄﺎﻟﺐ نرﯾﺎﻓﺖ
آد ﺑﻪ روز رﺳﺎﻧﯽ ﮐﻨﻗﯿﺮاﺪر دادن و ﺑﻪ آن را ﺣﺬف
ف ﺑﺎ اﺳﺘﻔﺎده از
ﺣﺷﺬﻤﺎ .
ﻧﻘﻄﻪ اﻧﺘﻬﺎﯾﯽ
و ﺑﯿﺸﺘﺮ .اﻣﺎ HTML, CSS, images, JavaScript,ﯾﮏ وب ﺳﺎﯾﺖ ﺷﺎﻣﻞ ﺻﻔﺤﺎت وب ﺑﺎ
اﻓﻌﺎل( اﺳﺖ ﮐﻪ اﻓﺸﺎی اﻃﻼﻋﺎت )ﺑﻪ ﻃﻮر ﻣﻌﻤﻮل در ﮐﻪ راﯾﺞ ﺗﺮﯾﻦ ﻓﺮﻣﺖ دادهJSON
ﺑﺮای ﯾﮏ وب ﺳﺎﯾﺖ ﺟﺪﯾﺪ ﺑﻪ ﻧﺎم APIﺑﺮای ﻣﺜﺎل ﻣﺎ ﻣﯽ ﺗﻮاﻧﺪ اﯾﺠﺎد زﯾﺮ ﻧﻘﻄﻪ اﻧﺘﻬﺎﯾﯽ
mysite .
ﻧﻤﻮدار
،در ﻧﻘﻄﻪ ﭘﺎﯾﺎﻧﯽ ﮐﺎرﺑﺮان/api/ ﯾﮏ ﻣﻮﺟﻮد دﺳﺘﺮسدرﯾﺎﻓﺖ درﺧﻮاﺳﺖ ﺑﺎزﮔﺸﺖ ﯾﮏ ﻟﯿﺴﺖ از ﻫﻤﻪ در
ﮐﺎرﺑﺮان اﺳﺖ .اﯾﻦ ﻧﻮع از ﭘﺎﯾﺎﻧﯽ ﮐﻪ ﺑﺎزده ﭼﻨﺪﮔﺎﻧﻪ داده ﻫﺎ از ﻣﻨﺎﺑﻊ ﺷﻨﺎﺧﺘﻪ ﺷﺪه اﺳﺖ ﺑﻪ ﻋﻨﻮان ﯾﮏ
.ﻣﺠﻤﻮﻋﻪ
ﺑﺨﺶ دوم و ﭘﺎﯾﺎﻧﯽ >/<idﮐﺎرﺑﺮان/api/ ﻧﺸﺎن دﻫﻨﺪه ﯾﮏ ﮐﺎرﺑﺮ .ﯾﮏ ﺑﺎزﮔﺸﺖدرﯾﺎﻓﺖ درﺧﻮاﺳﺖ
ﻞ1
: Web
ﻓﺼ Api 11
ﭘﺴﺖ اﮔﺮ ﻣﺎ اﺿﺎﻓﻪ ﺷﺪه ﺑﻪ اوﻟﯿﻦ ﻧﻘﻄﻪ ﭘﺎﯾﺎﻧﯽ ﻣﺎ ﻣﯽ ﺗﻮاﻧﺪ اﯾﺠﺎد ﯾﮏ ﮐﺎرﺑﺮ ﺟﺪﯾﺪ در ﺣﺎﻟﯽ ﮐﻪ ﺑﺎ اﺿﺎﻓﻪ ﮐﺮدن ﺣﺬف
.ﺑﻪ دوﻣﯿﻦ ﻧﻘﻄﻪ ﭘﺎﯾﺎﻧﯽ ﺧﻮاﻫﺪ ﺑﻪ ﻣﺎ اﺟﺎزه ﻣﯽ دﻫﺪ ﺑﺮای ﺣﺬف ﯾﮏ ﮐﺎرﺑﺮ
ﻧﻘﻄﻪ اﻧﺘﻬﺎﯾﯽ در ﻃﻮل دوره از اﯾﻦ APIﻣﺎ ﺗﺒﺪﯾﻞ ﺧﻮاﻫﺪ ﺷﺪ ﺑﺴﯿﺎر ﺑﯿﺸﺘﺮ آﺷﻨﺎ ﺑﺎ
ﺷﺎﻣﻞ ﺳﺎﺧﺖ ﯾﮏ ﺳﺮی از ﻧﻘﻄﻪ اﻧﺘﻬﺎﯾﯽ :آدرس ﻫﺎ ﺑﺎ APIﮐﺘﺎب اﻣﺎ در ﻧﻬﺎﯾﺖ اﯾﺠﺎد ﯾﮏ
ﺗﺼﺎوﯾﺮ و ﺑﯿﺸﺘﺮ .اﻣﺎ ﯾﮏ ﻧﻘﻄﻪ ﭘﺎﯾﺎﻧﯽ اﺳﺖ HTML, CSS,ﯾﮏ ﺻﻔﺤﻪ وب ﺷﺎﻣﻞ ﯾﮏ راه ﺑﺮای
HTTP
در اﯾﻦ ﻓﺼﻞ اﻣﺎ در اﯾﻨﺠﺎ ﻣﺎ ﺑﻪ ﺗﻮﺻﯿﻒ آﻧﭽﻪ در HTTPﻣﺎ در ﺣﺎل ﺣﺎﺿﺮ ﺻﺤﺒﺖ ﻫﺎی زﯾﺎدی در ﻣﻮرد
ﮐﺎﻣﭙﯿﻮﺗﺮ ﺳﺎﺧﺖ درﺧﻮاﺳﺖ ﺷﺪه اﺳﺖ ﺑﻪ ﻋﻨﻮان ﺷﻨﺎﺧﺘﻪ ﺷﺪه TCP.اﺗﺼﺎل در ﺣﺎﻟﯽ ﮐﻪ
ﮐﺎﻣﭙﯿﻮﺗﺮ ﭘﺎﺳﺦ ﺷﻨﺎﺧﺘﻪ ﺷﺪه اﺳﺖ ﺑﻪ ﻋﻨﻮان .ﺑﻪ ﻃﻮر ﻣﻌﻤﻮل ﯾﮏ ﻣﺸﺘﺮی اﺳﺖ ﮐﻪ ﯾﮏ ﻣﺮورﮔﺮ وب اﺳﺖ اﻣﺎ
ﯾﺎ واﻗﻌﺎ ﻫﺮ اﯾﻨﺘﺮﻧﺖ ﻣﺘﺼﻞ ﺑﻪ دﺳﺘﮕﺎه .ﯾﮏ ﺳﺮور ﯾﮏ iOSﻫﻤﭽﻨﯿﻦ ﻣﯽ ﺗﻮاﻧﺪ ﯾﮏ ﺑﺮﻧﺎﻣﻪ
ﻧﺎم ﻓﺎﻧﺘﺰی ﺑﺮای ﻫﺮ ﮐﺎﻣﭙﯿﻮﺗﺮ و ﺑﻬﯿﻨﻪ ﺳﺎزی ﺷﺪه ﺑﺮای ﮐﺎر ﺑﺮ روی اﯾﻨﺘﺮﻧﺖ اﺳﺖ .ﻫﻤﻪ ﻣﺎ واﻗﻌﺎ ﻧﯿﺎز
ﺑﻪ ﺗﺒﺪﯾﻞ ﯾﮏ ﭘﺎﯾﻪ ﻟﭗ ﺗﺎپ را ﺑﻪ ﯾﮏ ﺳﺮور اﺳﺖ ﮐﻪ ﺑﺮﺧﯽ از ﻧﺮم اﻓﺰار ﺧﺎص و ﻣﺪاوم
.اﺗﺼﺎل ﺑﻪ اﯾﻨﺘﺮﻧﺖ
ﭘﯿﺎم اﺳﺖ ﮐﻪ ﯾﮏ ﻣﺮورﮔﺮ ﻣﻤﮑﻦ اﺳﺖ ارﺳﺎل ﺑﻪ HTTPداده اﺳﺖ .ﺑﺮای ﻣﺜﺎل در اﯾﻨﺠﺎ ﯾﮏ ﻧﻤﻮﻧﻪ
درﺧﻮاﺳﺖ ﮔﻮﮔﻞ ﺻﻔﺤﻪ ﺧﺎﻧﮕﯽ واﻗﻊ در https://www.google.com .
ﻞ1
: Web
ﻓﺼ Api 12
ﻧﻤﻮدار
GET / HTTP/1.1
: google.comﻣﯿﺰﺑﺎن
Accept_Language: en-US
ﺧﻂ ﺑﺎﻻ ﺷﻨﺎﺧﺘﻪ ﺷﺪه اﺳﺖ ﺑﻪ ﻋﻨﻮان و آن را ﻣﺸﺨﺺ ( روش اﺳﺘﻔﺎده HTTP ),رﯾﺎﻓﺖ
د
زﺑﺎن اﯾﻦ زﺑﺎن ﺑﺮای اﺳﺘﻔﺎده در اﯾﻦ ﻣﻮرد زﺑﺎن اﻧﮕﻠﯿﺴﯽ آﻣﺮﯾﮑﺎﯾﯽ .وﺟﻮد دارد ﺑﺴﯿﺎری از HTTP
ﻋﻨﺎوﯾﻦ .در دﺳﺘﺮس اﺳﺖ
ﭘﯿﺎم ﻧﯿﺰ اﺧﺘﯿﺎری ,ﺑﺨﺶ ﺳﻮم ,ﺷﻨﺎﺧﺘﻪ ﺷﺪه ﺑﻪ ﻋﻨﻮان ﺑﺪن .ﺑﺎ اﯾﻦ ﺣﺎل ﻣﺎ HTTP
HTMLدر ﺻﻔﺤﻪ اﺻﻠﯽ ﻓﻘﻂ ﺷﺎﻣﻞ Googleﺑﻪ ﺳﺎدﮔﯽ اﺟﺎزه دﻫﯿﺪ ﻓﺮض ﮐﻨﯿﻢ ﮐﻪ
ﭘﯿﺎم از ﺳﺮور ﮔﻮﮔﻞ ﻣﻤﮑﻦ اﺳﺖ HTTPﺳﻼم ﺟﻬﺎن!" اﯾﻦ ﭼﯿﺰی اﺳﺖ ﮐﻪ ﭘﺎﺳﺦ"
.ﻣﺎﻧﻨﺪ ﻧﮕﺎه
ﻧﻤﻮدار
: gwsﺳﺮور
ﻗﺒﻮل-ﻣﺤﺪوده :ﺑﺎﯾﺖ
ﻣﺤﺘﻮا-ﻇﻬﺮ13 :
ﺳﻼم
!ﺟﻬﺎن
ﺧﻂ ﺑﺎﻻ اﺳﺖ و اﯾﻦ ﻣﺸﺨﺺ اﺳﺖ ﮐﻪ ﻣﺎ ﺑﺎ اﺳﺘﻔﺎده از HTTP/1.1 وﺿﻌﯿﺖ .
ﮐﺪ 200 OK ﻧﺸﺎن ﻣﯽ دﻫﺪ اﯾﻦ درﺧﻮاﺳﺖ ﺗﻮﺳﻂ ﻣﺸﺘﺮی ﻣﻮﻓﻖ ﺑﻮد )ﺑﯿﺸﺘﺮ در ﻣﻮرد ﮐﺪﻫﺎی وﺿﻌﯿﺖ
در ﻣﺪت
).ﮐﻮﺗﺎﻫﯽ
ﻞ1
: Web
ﻓﺼ Api 13
:ﻓﺮﻣﺖ
ﻧﻤﻮدار
ﭘﺎﺳﺦ/درﺧﻮاﺳﺖ ﺧﻂ
...ﻋﻨﺎوﯾﻦ
اﺧﺘﯿﺎری( ﺑﺪن(
و ﯾﮏ ﺗﺼﻮﯾﺮ ﺳﻪ ﺳﻔﺮﻫﺎی ﺟﺪاﮔﺎﻧﻪ CSSﺑﻪ ﺣﺎل ﯾﮏ ﻓﺎﯾﻞ HTMLﭼﺮﺧﻪ .اﮔﺮ ﯾﮏ ﺻﻔﺤﻪ وب sponse
ﺑﻪ ﻋﻘﺐ و ﺟﻠﻮ ﺑﯿﻦ ﮐﻼﯾﻨﺖ و ﺳﺮور ﺧﻮاﻫﺪ ﺑﻮد ﻻزم اﺳﺖ ﻗﺒﻞ از ﺗﮑﻤﯿﻞ
ﮐﺪﻫﺎی وﺿﻌﯿﺖ
در آدرس ﻫﯿﭻ ﺗﻀﻤﯿﻨﯽ وﺟﻮد ﻧﺪارد HTTPﻫﻨﮕﺎﻣﯽ ﮐﻪ ﻣﺮورﮔﺮ وب ﺧﻮد را اﻋﺪام ﮐﺮده اﺳﺖ ﯾﮏ درﺧﻮاﺳﺖ
ﻫﻤﻪ ﭼﯿﺰ را در واﻗﻊ ﮐﺎر! ﺑﻨﺎﺑﺮاﯾﻦ ﯾﮏ ﻟﯿﺴﺖ ﺑﺴﯿﺎر ﻃﻮﻻﻧﯽ از HTTPﮐﺪﻫﺎی وﺿﻌﯿﺖ
ﻣﻮﻓﻘﯿﺖ -ﻋﻤﻞ درﺧﻮاﺳﺖ ﺷﺪه ﺗﻮﺳﻂ ﻣﺸﺘﺮی درﯾﺎﻓﺖ ,درک ,و • 2xx
ﭘﺬﯾﺮﻓﺘﻪ
ﺧﻄﺎی ﺗﻐﯿﯿﺮ ﻣﺴﯿﺮ -درﺧﻮاﺳﺖ آدرس ﻣﻨﺘﻘﻞ ﺷﺪه اﺳﺖ • 3xx
• 4 xx درﺧﻮاﺳﺖ ﺷﺪه ﺗﻮﺳﻂ ﻣﺸﺘﺮی URLﻣﺸﺘﺮی ﺧﻄﺎ -ﺧﻄﺎ وﺟﻮد دارد و ﺑﻪ ﻃﻮر ﻣﻌﭘﯿﻤﻐﻮﺎلم ﺑﺪ
ﺧﻄﺎی
ﺑﻮده ﺧﻄﺎی ﺳﺮور -ﺳﺮور ﻣﻮﻓﻖ ﺑﻪ ﺣﻞ و ﻓﺼﻞ ﯾﮏ درﺧﻮاﺳﺖ • 5xx
ﻞ1
: Web
ﻓﺼ Api 14
وﺟﻮد دارد ﺑﺪون ﻧﯿﺎز ﺑﻪ ﺣﻔﻆ ﮐﺮدن ﺗﻤﺎم ﮐﺪﻫﺎی وﺿﻌﯿﺖ ﻣﻮﺟﻮد .ﺑﺎ ﺗﻤﺮﯾﻦ ﺷﻤﺎ را
(OK),ﺪ 200
201ﯽ ﮐﻪ ﻣﺎﻧﻨ (301
ﻦ آﻧﻬﺎﯾﺷﺎ,ﯾﻊ ﺗﺮﯾ
ﯽﯾ ﺑﺠﺎﺎد(
ﺗﺒﺪﯾﻞ ﺑﻪ آﺷﻨﺎﯾ ا
(Notﻢ((404 ,
) Foundﻃﻮر داﺋ
500ﺎن ﮐﺮد و ﺑﻪ
(Server Error).ﻧوﻘﻞ ﻣﮑ
ﭼﯿﺰی ﮐﻪ ﻣﻬﻢ اﺳﺖ ﺑﻪ ﯾﺎد داﺷﺘﻪ ﺑﺎﺷﯿﺪ اﯾﻦ اﺳﺖ ﮐﻪ ﺑﻪ ﻃﻮر ﮐﻠﯽ وﺟﻮد دارد ﺗﻨﻬﺎ ﭼﻬﺎر
)xxد ) HTTP: 2ﻧﺘﺎﯾﺞ ﺑﺎﻟﻘﻮه ﺑﺮای ﻫﺮ درﺧﻮاﺳﺖ
آن ﻫﺪاﯾﺖ آﻣنﯽ ﮐﺎﺷرﻮﯾﻣﺪﯽ ﮐﺮ
3) xx
)xxﻪ ﻧ4ﺤﻮی
xxﻐﺎ)م5ﺧﻄﺎ ﺑی
ﮏﺎه )ﺧﭘﯿﻄﺎ
ﮏه).ﯾﺑﺧﻮﻄد
ﺷﺘﺪﻪه ﯾﺷﺪ
ﺳﺎﺧ ﺧﻄﺎی( ﻣﺸوﺘﺮﯾﺎیﺳﺮ
ﺳﺎورﺧﺘﻪ
اﯾﻦ وﺿﻌﯿﺖ ﺑﻪ ﻃﻮر ﺧﻮدﮐﺎر ﮐﺪﻫﺎی ﻗﺮار داده ﺷﺪه در درﺧﻮاﺳﺖ/ﭘﺎﺳﺦ ﺧﻂ در ﺑﺎﻻی
.ﭘﯿﺎم HTTPﻫﺮ
Statelessness
اﺳﺖ ﮐﻪ از ﯾﮏ HTTPﻧﻬﺎﯾﯽ ﻧﮑﺘﻪ ﺑﺴﯿﺎر ﻣﻬﻢ را در ﻣﻮرد ﺖﻞ .اﯾﻦ
ﺑﺪون ﺗﺎﺑﭘﺮﻌوﯿﺗﮑ
.ﺑﻪ اﯾﻦ ﻣﻌﻨﯽ ﻫﺮ درﺧﻮاﺳﺖ/ﭘﺎﺳﺦ ﺟﻔﺖ ﺑﻪ ﻃﻮر ﮐﺎﻣﻞ ﻣﺴﺘﻘﻞ از ﯾﮑﯽ از ﻗﺒﻠﯽ
ﻫﯿﭻ ﺣﺎﻓﻈﻪ ذﺧﯿﺮه ﻣﯽ ﺷﻮد از ﮔﺬﺷﺘﻪ ﻓﻌﻞ و اﻧﻔﻌﺎﻻت اﺳﺖ ﮐﻪ ﺑﻪ ﻋﻨﻮان ﺷﻨﺎﺧﺘﻪ ﺷﺪه دوﻟﺖ در ﮐﺎﻣﭙﯿﻮﺗﺮ
.ﻋﻠﻢ اﺳﺖ
ﭘﺲ ﻫﻤﻪ ارﺗﺒﺎﻃﺎت اﻟﮑﺘﺮوﻧﯿﮑﯽ HTTP.ﺑﻪ ارﻣﻐﺎن ﻣﯽ آورد ﺑﺴﯿﺎری از ﻣﺰاﯾﺎی Statelessness
ﺳﯿﺴﺘﻢ از دﺳﺖ دادن ﺳﯿﮕﻨﺎل در ﻃﻮل زﻣﺎن اﮔﺮ ﻣﺎ ﯾﮏ ﺑﯽ وﻃﻦ ﭘﺮوﺗﮑﻞ ﻫﻤﻪ ﭼﯿﺰ را
اﺳﺖ HTTPﺑﻪ ﻃﻮر ﻣﺪاوم ﺷﮑﺴﺘﻦ اﮔﺮ ﯾﮏ درﺧﻮاﺳﺖ/ﭘﺎﺳﺦ ﭼﺮﺧﻪ ﻧﻤﯽ رﻓﺘﻦ را از ﻃﺮﯾﻖ .ﺑﻪ ﻋﻨﻮان ﯾﮏ ﻧﺘﯿﺠﻪ
.ﺑﻪ ﻋﻨﻮان ﺷﻨﺎﺧﺘﻪ ﺷﺪه اﺳﺖ ﺑﺴﯿﺎر اﻧﻌﻄﺎف ﭘﺬﯾﺮ ﺗﻮزﯾﻊ ﭘﺮوﺗﮑﻞ
ﺣﺮﮐﺖ ﻧﺰوﻟﯽ اﯾﻦ اﺳﺖ ﮐﻪ ﻣﺪﯾﺮﯾﺖ دوﻟﺘﯽ اﺳﺖ ﮐﻪ واﻗﻌﺎ ﻣﻬﻢ در وب ﺳﺎﯾﺖ
e-ﺑﺮﻧﺎﻣﻪ ﻫﺎی ﮐﺎرﺑﺮدی .دوﻟﺖ اﺳﺖ ﮐﻪ ﭼﮕﻮﻧﻪ ﯾﮏ وب ﺳﺎﯾﺖ ﺑﻪ ﯾﺎد ﻣﯽ آورد ﮐﻪ ﺷﻤﺎ ﺑﻪ ﺳﯿﺴﺘﻢ وارد ﺷﺪه و ﭼﮕﻮﻧﻪ ﯾﮏ
ﺳﺎﯾﺖ ﺧﻮد را ﻣﺪﯾﺮﯾﺖ ﺳﺒﺪ ﺧﺮﯾﺪ .اﯾﻦ اﺳﺎﺳﯽ ﺑﻪ ﻣﺎ ﭼﮕﻮﻧﻪ ﻣﺪرن و اﺳﺘﻔﺎده از commerce
در ﻃﻮل ﺗﺎرﯾﺦ دوﻟﺖ ﻧﮕﻬﺪاری ﻣﯽ ﺷﺪ ﺑﺮ روی ﺳﺮور اﻣﺎ آن ﻣﻨﺘﻘﻞ ﺷﺪه اﺳﺖ ﺑﯿﺸﺘﺮ و ﺑﯿﺸﺘﺮ ﺑﻪ
ﻣﺎﻧﻨﺪ واﮐﻨﺶ ﻧﺸﺎن ﻣﯽ دﻫﻨﺪ و زاوﯾﻪ ای و (front-end frameworksﻣﺸﺘﺮی ﻣﺮورﮔﺮ وب ﻣﺪرن در ﺟﻠﻮ
ﻣﺎ ﺑﻪ ﺷﻤﺎ اﻃﻼﻋﺎت ﺑﯿﺸﺘﺮ در ﻣﻮرد دوﻟﺖ زﻣﺎﻧﯽ ﮐﻪ ﻣﺎ ﭘﻮﺷﺶ اﺣﺮاز ﻫﻮﯾﺖ ﮐﺎرﺑﺮ اﻣﺎ ﺑﻪ ﯾﺎد داﺷﺘﻪ ﺑﺎﺷﯿﺪ Vue.
اﺳﺖ ﺑﺪون ﺗﺎﺑﻌﯿﺖ .اﯾﻦ ﺑﺎﻋﺚ ﻣﯽ ﺷﻮد آن را ﺑﺴﯿﺎر ﺧﻮب و ﻗﺎﺑﻞ اﻋﺘﻤﺎد ﺑﺮای ارﺳﺎل اﻃﻼﻋﺎت HTTPﮐﻪ
ﻞ1
: Web
ﻓﺼ Api 15
.درﺧﻮاﺳﺖ/ﭘﺎﺳﺦ ﺟﻔﺖ
ﺑﻘﯿﻪ
در ﭘﺎﯾﺎن ﻧﺎﻣﻪ ﭘﺎﯾﺎن ﻧﺎﻣﻪ .اﯾﻦ روﯾﮑﺮد ﺑﻪ ﺳﺎﺧﺖ راﺑﻂ ﻫﺎی ﺑﺮﻧﺎﻣﻪ ﮐﺎرﺑﺮدی در ﺑﺎﻻی Roy Fielding
HTTP.وب ﮐﻪ ﺑﺪان ﻣﻌﻨﯽ اﺳﺖ ﮐﻪ در ﺑﺎﻻ از ﭘﺮوﺗﮑﻞ
در واﻗﻊ آرام ﯾﺎ ﻧﻪ .اﻣﺎ APIﺗﻤﺎم ﮐﺘﺎب ﻫﺎی ﻧﻮﺷﺘﻪ ﺷﺪه ﺑﺮ روی ﭼﻪ ﭼﯿﺰی ﺑﺎﻋﺚ ﻣﯽ ﺷﻮد ﯾﮏ
RESTfulﺑﺎ وﺟﻮد ﺻﻔﺎت اﺻﻠﯽ اﺳﺖ ﮐﻪ ﻣﺎ را ﺑﻪ ﺗﻤﺮﮐﺰ ﺑﺮ روی اﯾﻨﺠﺎ ﺑﺮای اﻫﺪاف ﻣﺎ .ﻫﺮ
API:
ﻧﺘﻴﺠﻪ ﮔﻴﺮی
ﺑﺴﯿﺎری از ﻓﻦ آوری زﻣﯿﻨﻪ ای ﻣﺪرن ﺟﻬﺎن ﮔﺴﺘﺮده وب ﻣﺎ ﺑﻪ ﻋﻨﻮان در ﺣﺎﻟﯽ ﮐﻪ وﺟﻮد دارد
ﺗﻮﺳﻌﻪ دﻫﻨﺪﮔﺎن ﻻزم ﻧﯿﺴﺖ ﮐﻪ ﺑﺮای اﺟﺮای آن ﻫﻤﻪ از اﺑﺘﺪا .زﯾﺒﺎ ﺗﺮﮐﯿﺒﯽ
ﭼﺎرﭼﻮب دﺳﺘﮕﯿﺮه ﺑﻪ درﺳﺘﯽ ﺑﺴﯿﺎری از ﭘﯿﭽﯿﺪﮔﯽ Django RESTاز ﺟﻨﮕﻮ و
اﻣﺎ اﯾﻦ ﻣﻬﻢ اﺳﺖ ﮐﻪ ﺣﺪاﻗﻞ ﯾﮏ درک ﮔﺴﺘﺮده ای web Api.ﻫﺎی درﮔﯿﺮ ﺑﺎ
.از ﭼﮕﻮﻧﻪ ﻫﻤﻪ ﻗﻄﻌﺎت ﻣﺘﻨﺎﺳﺐ ﺑﺎ ﻫﻢ
ﻣﺠﻤﻮﻋﻪ ای از ﻧﻘﻄﻪ اﻧﺘﻬﺎﯾﯽ ﮐﻪ اﻓﺸﺎی ﺑﺨﺶ ﻫﺎی ﺧﺎﺻﯽ از ﯾﮏ web APIدر ﻧﻬﺎﯾﺖ ﯾﮏ
ﺑﺮای ﻫﺮ ﭘﺎﯾﺎﻧﯽ ﭼﻪ Urlزﻣﯿﻨﻪ ﭘﺎﯾﮕﺎه داده .ﺑﻪ ﻋﻨﻮان ﺗﻮﺳﻌﻪ دﻫﻨﺪﮔﺎن ﻣﺎ ﮐﻨﺘﺮل