0% found this document useful (0 votes)
22 views19 pages

Django For ApisoneCapter

Uploaded by

h.afsari911
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
22 views19 pages

Django For ApisoneCapter

Uploaded by

h.afsari911
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 19

‫ﺟﻨﮕﻮ ﺑﺮای راﺑﻂ ﻫﺎی ﺑﺮﻧﺎﻣﻪ ﮐﺎرﺑﺮدی‬

‫‪ Django‬و ‪ Python‬ﺳﺎﺧﺖ راﺑﻂ ﻫﺎی ﺑﺮﻧﺎﻣﻪ ﮐﺎرﺑﺮدی وب ﺑﺎ‬


‫وﯾﻨﺴﻨﺖ ‪William S.‬‬

‫اﯾﻦ ﮐﺘﺎب ﺑﺮای ﻓﺮوش در‬ ‫‪http://leanpub.com/djangoforapis‬‬

‫اﯾﻦ ﻧﺴﺨﻪ ﻣﻨﺘﺸﺮ ﺷﺪ ‪28-10-2019‬‬

‫اﯾﻦ ﯾﮏ‬ ‫ﺳﺒﺐ ﻧﻮﯾﺴﻨﺪﮔﺎن و ﻧﺎﺷﺮان ﺑﺎ ﺗﮑﯿﻪ ‪. Leanpub‬ﮐﺘﺎب ‪Leanpub‬‬

‫‪.‬روﻧﺪ ﭼﺎپ و ﻧﺸﺮ‬ ‫ﺗﮑﯿﻪ ﭼﺎپ و ﻧﺸﺮ‬ ‫ﻋﻤﻞ ﭼﺎپ و ﻧﺸﺮ در ﺣﺎل ﭘﯿﺸﺮﻓﺖ ﮐﺘﺎب‬

‫ﺑﺎ اﺳﺘﻔﺎده از اﺑﺰار ﺑﺴﯿﺎر ﺳﺒﮏ وزن و و ﺑﺴﯿﺎری از ﺗﮑﺮارﻫﺎ ﺑﻪ ﺧﻮاﻧﻨﺪه ﺑﺎزﺧﻮرد ﻣﺤﻮری ﺗﺎ زﻣﺎﻧﯽ ﮐﻪ ﺷﻤﺎ در‬
‫‪.‬ﺣﻖ ﮐﺘﺎب و اﯾﺠﺎد ﮐﺸﺶ ﻫﻨﮕﺎﻣﯽ ﮐﻪ ﺷﻤﺎ اﻧﺠﺎم دﻫﺪ‬

‫وﯾﻨﺴﻨﺖ ‪© 2018 - 2019 William S.‬‬

‫‪William‬ﭽﻨﯿﻦ ﺗﻮﺳﻂ‬
‫ﻫﻤ‬ ‫وﯾﻨﺴﻨﺖ ‪S.‬‬
‫ﺟﻨﮕﻮ ﺑﺮای ﻣﺒﺘﺪﯾﺎن‬

‫ﺟﻨﮕﻮ ﺑﻪ ﺻﻮرت ﺣﺮﻓﻪ ای‬


‫ﻣﻄﺎﻟﺐ‬

‫ﻣﻘﺪﻣﻪ‬ ‫‪1‬‬

‫ﭘﯿﺶ ﻧﯿﺎزﻫﺎ‬ ‫‪1‬‬

‫ﭼﺮا راﺑﻂ ﻫﺎی ﺑﺮﻧﺎﻣﻪ ﮐﺎرﺑﺮدی‬ ‫‪2‬‬


‫ﭼﺎرﭼﻮب ‪Django REST‬‬ ‫‪3‬‬

‫ﭼﺮا اﯾﻦ ﮐﺘﺎب‬ ‫‪4‬‬


‫ﻧﺘﻴﺠﻪ ﮔﻴﺮی‬ ‫‪5‬‬

‫ﻞ‪1‬‬
‫ﺼ‪:‬‬‫‪Web‬‬
‫ﻓ‬ ‫‪Api‬‬ ‫‪6‬‬

‫ﺷﺒﮑﻪ ﺟﻬﺎﻧﯽ وب‬ ‫‪6‬‬

‫آدرس‬ ‫‪7‬‬

‫ﭘﺮوﺗﮑﻞ اﯾﻨﺘﺮﻧﺖ ﻣﺠﻤﻮﻋﻪ‬ ‫‪8‬‬


‫اﻓﻌﺎل ‪HTTP‬‬ ‫‪9‬‬
‫ﻧﻘﻄﻪ اﻧﺘﻬﺎﯾﯽ‬ ‫‪10‬‬
‫‪HTTP‬‬ ‫‪11‬‬

‫ﮐﺪﻫﺎی وﺿﻌﯿﺖ‬ ‫‪13‬‬


‫‪Statelessness‬‬ ‫‪14‬‬

‫ﺑﻘﯿﻪ‬ ‫‪15‬‬

‫ﻧﺘﻴﺠﻪ ﮔﻴﺮی‬ ‫‪15‬‬

‫‪API‬ﺎﻞﯾ ‪2‬‬
‫ﺖو‬ ‫‪ :‬ﮐﺘﺎﺑﺨﺎﻧﻓﻪﺼﺳ‬ ‫‪17‬‬
‫‪ Django‬ﺳﻨﺘﯽ‬ ‫‪17‬‬

‫اوﻟﯿﻦ ﺑﺮﻧﺎﻣﻪ‬ ‫‪21‬‬


‫ﻣﺪل‬ ‫‪23‬‬

‫ﻣﻄﺎﻟﺐ‬

‫‪Admin‬‬ ‫‪25‬‬

‫‪Views‬‬ ‫‪29‬‬
‫آدرس‬ ‫‪30‬‬

‫ﺻﻔﺤﻪ وب‬ ‫‪34‬‬


‫ﭼﺎرﭼﻮب ‪Django REST‬‬ ‫‪34‬‬

‫آدرس‬ ‫‪37‬‬

‫‪Views‬‬ ‫‪38‬‬

‫‪Serializers‬‬ ‫‪39‬‬
‫ﺣﻠﻘﻪ‬ ‫‪40‬‬

‫‪ API‬ﺑﺮﺗﺮﯾﻦ از‬ ‫‪41‬‬


‫ﻧﺘﻴﺠﻪ ﮔﻴﺮی‬ ‫‪43‬‬

‫ﻞ‪3‬‬
‫ﺼ‪:‬‬‫‪Todo‬‬
‫ﻓ‬ ‫‪API‬‬ ‫‪44‬‬

‫اوﻟﯿﻪ راه اﻧﺪازی‬ ‫‪44‬‬

‫ﻣﺪل‬ ‫‪47‬‬
‫ﭼﺎرﭼﻮب ‪Django REST‬‬ ‫‪51‬‬

‫آدرس‬ ‫‪53‬‬
‫‪Serializers‬‬ ‫‪54‬‬

‫‪Views‬‬ ‫‪56‬‬

‫‪ API‬ﻣﺼﺮف‬ ‫‪57‬‬

‫‪ API‬ﺑﺮﺗﺮﯾﻦ از‬ ‫‪58‬‬


‫‪CORS‬‬ ‫‪60‬‬

‫آزﻣﻮن‬ ‫‪63‬‬
‫ﻧﺘﻴﺠﻪ ﮔﻴﺮی‬ ‫‪64‬‬

‫ﻞ‪4‬‬
‫ﺼ‪:‬‬‫‪Todo‬‬
‫ﻓ‬ ‫‪ Front-end‬واﮐﻨﺶ ﻧﺸﺎن ﻣﯽ دﻫﻨﺪ‬ ‫‪66‬‬
‫‪ Node‬ﻧﺼﺐ‬ ‫‪66‬‬
‫ﻧﺼﺐ واﮐﻨﺶ ﻧﺸﺎن ﻣﯽ دﻫﻨﺪ‬ ‫‪67‬‬
‫ﺳﺎﺧﺘﮕﯽ داده ﻫﺎ‬ ‫‪69‬‬

‫ﭼﺎرﭼﻮب ‪ +‬واﮐﻨﺶ ﻧﺸﺎن ﻣﯽ دﻫﻨﺪ ‪Django REST‬‬ ‫‪74‬‬

‫ﻣﻄﺎﻟﺐ‬

‫ﻧﺘﻴﺠﻪ ﮔﻴﺮی‬ ‫‪78‬‬

‫‪5‬گ‬ ‫‪API‬و‬
‫ﻞﺑﻼ‬‫ﺼ‬‫ﻓ‪:‬‬ ‫‪79‬‬

‫اوﻟﯿﻪ راه اﻧﺪازی‬ ‫‪79‬‬

‫ﻣﺪل‬ ‫‪80‬‬
‫آزﻣﻮن‬ ‫‪84‬‬

‫ﭼﺎرﭼﻮب ‪Django REST‬‬ ‫‪86‬‬


‫آدرس‬ ‫‪88‬‬

‫‪Serializers‬‬ ‫‪89‬‬

‫‪Views‬‬ ‫‪91‬‬

‫‪ API‬ﺑﺮﺗﺮﯾﻦ از‬ ‫‪92‬‬


‫ﻧﺘﻴﺠﻪ ﮔﻴﺮی‬ ‫‪96‬‬

‫‪6‬ﻮز‬
‫ﻓﺼ‪:‬ﻞﻣﺠ‬ ‫‪97‬‬

‫اﯾﺠﺎد ﯾﮏ ﮐﺎرﺑﺮ ﺟﺪﯾﺪ‬ ‫‪97‬‬


‫‪ API‬اﺿﺎﻓﻪ ﮐﺮدن ورود ﺑﻪ ﺑﺮﺗﺮﯾﻦ از‬ ‫‪100‬‬

‫‪AllowAny‬‬ ‫‪105‬‬

‫ﻧﻤﺎﯾﺶ ﺳﻄﺢ دﺳﺘﺮﺳﯽ‬ ‫‪107‬‬

‫ﭘﺮوژه‪-‬ﺳﻄﺢ دﺳﺘﺮﺳﯽ‬ ‫‪109‬‬


‫ﺳﻔﺎرﺷﯽ ﻣﺠﻮز‬ ‫‪111‬‬

‫ﻧﺘﻴﺠﻪ ﮔﻴﺮی‬ ‫‪116‬‬

‫ﺖﻞ ﮐﺎ‪7‬رﺑﺮ‬
‫‪ :‬اﺣﺮاز ﻫﻮﻓﯾﺼ‬ ‫‪117‬‬

‫اﻋﺘﺒﺎر اوﻟﯿﻪ‬ ‫‪117‬‬

‫ﺟﻠﺴﻪ اﺣﺮاز ﻫﻮﯾﺖ‬ ‫‪119‬‬

‫رﻣﺰ اﺣﺮاز ﻫﻮﯾﺖ‬ ‫‪121‬‬


‫ﺑﻪ ﻃﻮر ﭘﯿﺶ ﻓﺮض اﺣﺮاز ﻫﻮﯾﺖ‬ ‫‪123‬‬

‫‪ token authentication‬اﺟﺮای‬ ‫‪124‬‬


‫ﻧﻘﻄﻪ اﻧﺘﻬﺎﯾﯽ‬ ‫‪128‬‬

‫‪-Auth‬اﺳﺘﺮاﺣﺖ‪Django-‬‬ ‫‪128‬‬
‫ﻣﻄﺎﻟﺐ‬

‫ﺛﺒﺖ ﻧﺎم ﮐﺎرﺑﺮ‬ ‫‪134‬‬

‫ﻧﺸﺎﻧﻪ‬ ‫‪139‬‬

‫ﻧﺘﻴﺠﻪ ﮔﻴﺮی‬ ‫‪145‬‬

‫ﻞ‪8‬‬
‫ﺼ‪:‬‬‫‪Viewsets‬‬
‫ﻓ‬ ‫و روﺗﺮ‬ ‫‪147‬‬

‫ﮐﺎرﺑﺮ اﻧﺘﻬﺎﯾﯽ‬ ‫‪147‬‬

‫‪Viewsets‬‬ ‫‪153‬‬
‫روﺗﺮ‬ ‫‪154‬‬

‫ﻧﺘﻴﺠﻪ ﮔﻴﺮی‬ ‫‪160‬‬

‫‪9‬ت‬ ‫‪ :‬ﻃﺮح و ﻓﻣﺼﺴﺘ‬


‫ﻞﻨﺪا‬ ‫‪162‬‬
‫ﻃﺮﺣﻮاره‬ ‫‪163‬‬

‫ﻣﺴﺘﻨﺪات‬ ‫‪165‬‬
‫ﺑﺎ ﺗﮑﺒﺮ راه رﻓﺘﻦ ‪Django REST‬‬ ‫‪171‬‬

‫‪ Log Out‬و ‪ Log In‬ﺑﺎ ﺗﮑﺒﺮ راه رﻓﺘﻦ‬ ‫‪175‬‬


‫ﻧﺘﻴﺠﻪ ﮔﻴﺮی‬ ‫‪176‬‬

‫ﻧﺘﻴﺠﻪ ﮔﻴﺮی‬ ‫‪177‬‬


‫ﮔﺎم ﻫﺎی ﺑﻌﺪی‬ ‫‪177‬‬

‫دادن ﺑﺎ ﺗﺸﮑﺮ‬ ‫‪178‬‬


‫ﻣﻘﺪﻣﻪ‬
‫ﭘﺸﺖ ﺻﺤﻨﻪ‪ ,‬ﺣﺘﯽ ﺳﺎده ﺗﺮﯾﻦ آﻧﻼﯾﻦ ‪ RESTful APIs.‬اﯾﻨﺘﺮﻧﺖ ﻃﺮاﺣﯽ ﺷﺪه اﺳﺖ‬
‫‪.‬وﻇﯿﻔﻪ ﺷﺎﻣﻞ ﭼﻨﺪﯾﻦ ﮐﺎﻣﭙﯿﻮﺗﺮ در ﺗﻌﺎﻣﻞ ﺑﺎ ﯾﮏ دﯾﮕﺮ‬

‫( اﺳﺖ و راه و رﺳﻤﯽ ﺑﺮای ﺗﻮﺻﯿﻒ دو ﮐﺎﻣﭙﯿﻮﺗﺮ( ‪ API‬ﯾﮏ‬

‫ارﺗﺒﺎط ﻣﺴﺘﻘﯿﻢ ﺑﺎ ﯾﮑﺪﯾﮕﺮ اﺳﺖ‪ .‬و در ﺣﺎﻟﯽ ﮐﻪ راه ﻫﺎی ﻣﺘﻌﺪد وﺟﻮد دارد ﺑﺮای ﺳﺎﺧﺖ‬
‫ﻫﺎ–ﮐﻪ اﺟﺎزه ﻣﯽ دﻫﺪ ﺗﺎ ﺑﺮای اﻧﺘﻘﺎل داده ﻫﺎ ﺑﺮ روی ﺷﺒﮑﻪ ﺟﻬﺎﻧﯽ وب در ﺣﺎل ‪ API web Api‬ﯾﮏ‬
‫( ﺷﺪت ﺳﺎﺧﺖ ﯾﺎﻓﺘﻪ در آرام‬ ‫( اﻟﮕﻮی‬ ‫‪.‬‬

‫از اﻓﺰاﯾﺶ ‪ RESTful web Api‬در اﯾﻦ ﮐﺘﺎب ﺑﻪ ﺷﻤﺎ ﺧﻮاﻫﺪ آﻣﻮﺧﺖ ﮐﻪ ﭼﮕﻮﻧﻪ ﺑﻪ ﺳﺎﺧﺖ ﭼﻨﺪﯾﻦ‬
‫‪.‬ﭼﺎرﭼﻮب اﺳﺖ ‪ Django REST‬و ‪ Django‬ﭘﯿﭽﯿﺪﮔﯽ از اﺑﺘﺪا ﺑﺎ اﺳﺘﻔﺎده از‬

‫ﺗﺮﮐﯿﺒﯽ از‬ ‫و ‪Django‬‬ ‫ﭼﺎرﭼﻮب ‪Django REST‬‬ ‫ﯾﮑﯽ از ﻣﺤﺒﻮب ﺗﺮﯾﻦ‬


‫ﻫﺎی اﺳﺘﻔﺎده ﺷﺪه ﺗﻮﺳﻂ ﺑﺴﯿﺎری از ﺑﺰرﮔﺘﺮﯾﻦ ﺷﺮﮐﺖ ﻫﺎی ﻓﻦ آوری ‪ Api‬و ﻗﺎﺑﻞ ﺗﻨﻈﯿﻢ راه ﺑﺮای ﺳﺎﺧﺖ وب ﺳﺎﯾﺖ‬
‫آن ﻧﯿﺰ ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮد ‪ Bitbucket.‬ﻣﻮزﯾﻼ‪ ,‬ﭘﯿﻨﺘﺮﺳﺖ و ‪ Instagram,‬در ﺟﻬﺎن از ﺟﻤﻠﻪ‬

‫ﻣﻨﺎﺳﺐ ﺑﺮای ﻣﺒﺘﺪﯾﺎن ﺑﻪ دﻟﯿﻞ ﺟﻨﮕﻮ را "ﺑﺎﺗﺮی‪-‬ﺷﺎﻣﻞ" روﯾﮑﺮد ﻣﺎﺳﮏ ﺑﺴﯿﺎر‬


‫‪ API.‬اﺳﺎﺳﯽ ﭘﯿﭽﯿﺪﮔﯽ و ﺧﻄﺮات اﻣﻨﯿﺘﯽ درﮔﯿﺮ در اﯾﺠﺎد ﻫﺮ وب‬

‫ﭘﯿﺶ ﻧﯿﺎزﻫﺎ‬

‫اﮔﺮ ﺷﻤﺎ ﺑﺎ ﻧﺎم ﺗﺠﺎری ﺟﺪﯾﺪ ﺑﻪ ﺗﻮﺳﻌﻪ وب ﺑﺎ ﺟﻨﮕﻮ ﻣﻦ ﭘﯿﺸﻨﻬﺎد ﻣﯽ ﮐﻨﻢ اول ﻣﻦ ﺧﻮاﻧﺪن‬
‫ﮐﺘﺎب ﻗﺒﻠﯽ‬ ‫ﺟﻨﮕﻮ ﺑﺮای ﻣﺒﺘﺪﯾﺎن‬ ‫اول ﭼﻨﺪ ﻓﺼﻞ در دﺳﺘﺮس ﻫﺴﺘﻨﺪ ﺑﻪ ﺻﻮرت راﯾﮕﺎن ‪.‬‬
‫آﻧﻼﯾﻦ و ﭘﻮﺷﺶ ﻣﻨﺎﺳﺐ راه اﻧﺪازی ﯾﮏ‬ ‫ﺑﺮﻧﺎﻣﻪ و ﯾﮏ‬ ‫ﺑﺮﻧﺎﻣﻪ‪,‬‬

‫ﺳﺎﯾﺖ‪ .‬ﺗﻤﺎم ﻃﻮل ﻧﺴﺨﻪ ﻋﻤﯿﻖ ﺗﺮ ﻣﯽ رود و ﭘﻮﺷﺶ ﻣﯽ دﻫﺪ‬ ‫وب ﺳﺎﯾﺖ ﺑﺎ اﺷﮑﺎل و‬
‫ﺣﺴﺎب ﻫﺎی ﮐﺎرﺑﺮی و ﻫﻤﭽﻨﯿﻦ ﺑﻪ ﻋﻨﻮان ﯾﮏ ﺗﻮﻟﯿﺪ‪-‬آﻣﺎده‬ ‫ﺳﺎﯾﺖ اﺳﺖ ﮐﻪ اﻣﮑﺎﻧﺎت ﺳﻔﺎرﺷﯽ‬

‫ﮐﺎرﺑﺮ ﻣﺪل‪ ,‬ﮐﺎﻣﻞ‪ ,‬ﮐﺎرﺑﺮ اﺣﺮاز ﻫﻮﯾﺖ ﺟﺮﯾﺎن‪ ,‬اﯾﻤﯿﻞ‪,‬‬


‫‪.‬ﻣﺠﻮز‪ ,‬و ﺑﯿﺸﺘﺮ‬

‫ﻣﻘﺪﻣﻪ‬ ‫‪2‬‬

‫ﭼﺎرﭼﻮب ‪ Django REST‬ﻣﻬﻢ اﺳﺖ ﮐﻪ ﭘﺲ از ‪ Django‬اﯾﻦ ﭘﺲ زﻣﯿﻨﻪ ﺳﻨﺘﯽ‬


‫‪.‬ﮐﻨﻮاﻧﺴﯿﻮن ‪ Django‬ﻋﻤﺪا ﺗﻘﻠﯿﺪ ﺑﺴﯿﺎری از‬

‫ﻫﻤﭽﻨﯿﻦ ﺗﻮﺻﯿﻪ ﻣﯽ ﺷﻮد ﮐﻪ ﺧﻮاﻧﻨﺪﮔﺎن ﺑﺎﯾﺪ ﯾﮏ داﻧﺶ ﭘﺎﯾﻪ از ﭘﺎﯾﺘﻮن ﺧﻮد را‪ .‬واﻗﻌﺎ‬
‫ﺳﺎل ﻃﻮل ﻣﯽ ﮐﺸﺪ اﻣﺎ ﺑﺎ ﻓﻘﻂ ﯾﮏ ﮐﻤﯽ از داﻧﺶ ﺷﻤﺎ ﻣﯽ ﺗﻮاﻧﯿﺪ ﺷﯿﺮﺟﻪ رﻓﺘﻦ در ﺳﻤﺖ راﺳﺖ ‪mastering Python‬‬
‫‪.‬و ﺷﺮوع ﺑﻪ ﺳﺎﺧﺘﻦ ﭼﯿﺰﻫﺎی‬

‫ﭼﺮا راﺑﻂ ﻫﺎی ﺑﺮﻧﺎﻣﻪ ﮐﺎرﺑﺮدی‬

‫‪2005‬‬
‫گ‬‫ﻞلﯾﮏ ﺑﺰر‬
‫ﺖ دﺷرﺎﻣﺳﺎ‬
‫بﺘﺸﺳﺮﺎﯾﺷﺪ‬
‫ی ﺑاﺎزر وﻣﻨ‬
‫ﺴوﯿﻟﺎﯿرﻦ‬
‫ﺟﻨنﮕزﻮﻣﺑﺎﺮانیﺑ ا‬
‫و در آ‬
‫ﺷﺎﻣﻞ ﻣﺪل ﻫﺎی ﭘﺎﯾﮕﺎه داده ﻫﺎ و ﻧﻤﺎﯾﺶ ﻫﺎ "‪ "back-end‬ﯾﮑﭙﺎرﭼﻪ ﮐﺪﻫﺎی‪ .‬اﯾﻦ‬

‫و ﺟﺎوا اﺳﮑﺮﯾﭙﺖ اﺳﺖ ﮐﻪ ‪ HTML, CSS‬ﻗﺎﻟﺐ "‪ "front-end‬ﮐﻪ در ﺗﻌﺎﻣﻞ ﺑﺎ‬


‫‪.‬ﻃﺮح از ﻫﺮ ﺻﻔﺤﻪ وب ‪ presentational‬ﮐﻨﺘﺮل‬
‫‪ dom-‬اول" روﯾﮑﺮد ﭘﺪﯾﺪ آﻣﺪه ﮐﻪ ﻣﺴﻠﻤﺎ‪ "API-‬ﺑﺎ اﯾﻦ ﺣﺎل در ﺳﺎل ﻫﺎی اﺧﯿﺮ ﯾﮏ‬
‫ﭘﺎراداﯾﻢ در ﺗﻮﺳﻌﻪ وب‪ .‬اﯾﻦ روﯾﮑﺮد ﺷﺎﻣﻞ ﺑﻪ ﻃﻮر رﺳﻤﯽ ﺟﺪا ﮐﺮدن ‪inant‬‬
‫‪ API‬از ﺟﻠﻮﯾﯽ‪ .‬ﺑﻪ اﯾﻦ ﻣﻌﻨﯽ ﺟﻨﮕﻮ ﻣﯽ ﺷﻮد ﯾﮏ ﭘﺎﯾﮕﺎه داده ﻗﺪرﺗﻤﻨﺪ و ‪back-end‬‬
‫‪ framework.‬ﺑﻪ ﺟﺎی ﻓﻘﻂ ﯾﮏ وب ﺳﺎﯾﺖ‬

‫ﻣﺴﻠﻤﺎ اﻏﻠﺐ اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد ﺑﻪ ﻋﻨﻮان ‪ Django‬اﻣﺮوز‬ ‫ﯾﮏ‬ ‫ﺑﻪ ﺟﺎی ﮐﺎﻣﻞ ‪back-end API‬‬
‫!ﯾﮑﭙﺎرﭼﻪ راه ﺣﻞ وب ﺳﺎﯾﺖ در ﺷﺮﮐﺖ ﻫﺎی ﺑﺰرگ‬

‫ﺑﺎ اﯾﻦ ﻧﺴﺨﻬﻬﺎ ﮐﺎر ﮐﺎﻣﻼ ‪ Django‬ﯾﮏ ﺳﻮال واﺿﺢ در اﯾﻦ ﻧﻘﻄﻪ اﺳﺖ ﮐﻪ "ﭼﺮا زﺣﻤﺖ؟" ﺳﻨﺘﯽ‬
‫‪ web API‬ﺑﻪ ﺧﻮﺑﯽ ﺧﻮد را در آن و ﺗﺒﺪﯾﻞ ﺑﻪ ﯾﮏ ﺟﻨﮕﻮ ﺳﺎﯾﺖ ﺑﻪ ﯾﮏ‬ ‫ﻣﺎﻧﻨﺪ ﺑﺴﯿﺎری از اﺿﺎﻓﯽ‬

‫در ‪ (front-end‬ﮐﺎر ﻣﯽ ﮐﻨﻨﺪ‪ .‬ﺑﻪ ﻋﻨﻮان ﯾﮏ ﺗﻮﺳﻌﻪ دﻫﻨﺪه ﺷﻤﺎ ﺳﭙﺲ ﺑﻪ ﻧﻮﺷﺘﻦ اﺧﺘﺼﺎص داده ﺷﺪه در ﺟﻠﻮ‬

‫‪.‬زﺑﺎن ﻫﺎی ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫اﯾﻦ روﯾﮑﺮد ﺗﻘﺴﯿﻢ ﺧﺪﻣﺎت ﺑﻪ اﺟﺰای ﻣﺨﺘﻠﻒ راه اﺳﺖ ﮐﻪ ﺑﻪ ﻃﻮر ﮔﺴﺘﺮده‬
‫یان ﺷﻨﺎﺧﺘﻪ ﺷﺪه‬
‫ﺳﺮوﯾﺲ ﮔﺮا ﻣﺑﻌﻪﻤﺎﻋرﻨﻮ‬ ‫‪.‬‬

‫ﻣﻌﻠﻮم ﻣﯽ ﺷﻮد ﺑﺎ اﯾﻦ ﺣﺎل ﮐﻪ ﭼﻨﺪﯾﻦ ﻣﺰﯾﺖ ﺑﺮای ﺟﺪا ﮐﺮدن ﺑﺨﺶ ﺟﻠﻮﯾﯽ‬

‫‪ back-end‬از آﻧﺠﺎ ﮐﻪ ﯾﮏ "‪ "future-proof‬از ﻋﻘﺐ ﭘﺎﯾﺎن‪ .‬آن اﺳﺖ ﮐﻪ ﻣﺴﻠﻤﺎ ﺧﯿﻠﯽ ﺑﯿﺸﺘﺮ‬

‫ﻣﻘﺪﻣﻪ‬ ‫‪3‬‬

‫ﻣﯽ ﺗﻮان ﻣﺼﺮف ﺷﺪه ﺗﻮﺳﻂ ‪API‬‬ ‫ﺟﺎوا اﺳﮑﺮﯾﭙﺖ ﺟﻠﻮﯾﯽ‪ .‬ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻧﺮخ ﺳﺮﯾﻊ ﺗﻐﯿﯿﺮ در‬

‫–ﮐﺘﺎﺑﺨﺎﻧﻪ ﻫﺎ ‪front-end‬‬ ‫‪2013‬ون ﻣﯽ دﻫﻨﺪ‬


‫ﺸﺮﺶﺷﻧﺪﺸهﺎ‬
‫ﺗﻨﻬﺎ در ﺳﻣﺎوﻨاﺘلﮐﻨ‬ ‫ﺴﯿﺎر ‪Vue‬‬
‫‪2014‬‬
‫!–اﯾدرﻦ اﺳﺎﺳلﺖ ﮐﻪ ﺑ‬
‫ﻫﺴﺘﻨﺪ در ﻧﻬﺎﯾﺖ ﺟﺎﯾﮕﺰﯾﻦ ﺣﺘﯽ ‪ front-end frameworks‬ﺑﺎ ارزش اﺳﺖ‪ .‬ﻫﻨﮕﺎﻣﯽ ﮐﻪ زﻣﺎن‬
‫ﻣﯽ ﺗﻮاﻧﯿﺪ ﺑﺎﻗﯽ ﻣﯽ ﻣﺎﻧﺪ ﻫﻤﺎن‪ .‬ﻫﯿﭻ اﺻﻠﯽ ‪ API‬آﻧﻬﺎﯾﯽ ﮐﻪ ﺟﺪﯾﺪﺗﺮ در ﺳﺎل ﺑﻪ آﻣﺪه ﺑﻪ ﻋﻘﺐ ﭘﺎﯾﺎن‬
‫‪.‬ﺑﺎزﻧﻮﯾﺴﯽ ﻣﻮرد ﻧﯿﺎز اﺳﺖ‬

‫ﻣﯽ ﺗﻮاﻧﯿﺪ ﭘﺸﺘﯿﺒﺎﻧﯽ از ﭼﻨﺪﯾﻦ ﺟﺒﻬﻪ ﺑﻪ ﭘﺎﯾﺎن ﻣﯽ رﺳﺪ ﻧﻮﺷﺘﻪ ﺷﺪه در زﺑﺎن ﻫﺎی ﻣﺨﺘﻠﻒ و ‪ API‬دوم ﯾﮏ‬

‫ﭼﺎرﭼﻮب‪ .‬در ﻧﻈﺮ ﺑﮕﯿﺮﯾﺪ ﮐﻪ ﺟﺎوا اﺳﮑﺮﯾﭙﺖ اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد ﺑﺮای وب ﺳﺎﯾﺖ ﻣﻘﺪم‪-‬ﺑﻪ ﭘﺎﯾﺎن ﻣﯽ رﺳﺪ در ﺣﺎﻟﯽ ﮐﻪ ﺑﺮﻧﺎﻣﻪ ﻫﺎی اﻧﺪروﯾﺪ‬
‫‪ Swift‬ﻧﯿﺎز ﺑﻪ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ‪ iOS‬ﻧﯿﺎز ﺑﻪ زﺑﺎن ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺟﺎوا و ﺑﺮﻧﺎﻣﻪ ﻫﺎی‬
‫زﺑﺎن‪ .‬ﺑﺎ ﯾﮏ ﺳﻨﺘﯽ ﯾﮑﭙﺎرﭼﻪ روﯾﮑﺮد ﯾﮏ ﺟﻨﮕﻮ وب ﺳﺎﯾﺖ ﻧﻤﯽ ﺗﻮاﻧﺪ ﺣﻤﺎﯾﺖ‬
‫داﺧﻠﯽ ﻫﺮ ﺳﻪ ﻣﯽ ﺗﻮاﻧﻨﺪ ﺑﺎ ‪ API‬اﯾﻦ ﺟﺒﻬﻪ ﻫﺎی ﻣﺨﺘﻠﻒ ﺑﻪ ﭘﺎﯾﺎن ﻣﯽ رﺳﺪ‪ .‬اﻣﺎ ﺑﺎ ﯾﮏ‬
‫!ﻫﻤﺎن زﻣﯿﻨﻪ ﭘﺎﯾﮕﺎه داده ﺑﻪ ﻋﻘﺐ ﭘﺎﯾﺎن‬

‫روش اول ﻣﯽ ﺗﻮان ﺑﺎ اﺳﺘﻔﺎده از ﻫﺮ دو داﺧﻠﯽ و ﺧﺎرﺟﯽ‪ .‬زﻣﺎﻧﯽ ﮐﻪ ﻣﻦ‪ API-‬ﺳﻮم‬


‫‪2010‬ﻣﺎ ‪Quizlet‬ﻣﺸﻐﻮل ﺑﻪ ﮐﺎر در‬
‫ﺳﺎﺳلﻌﻪ ﺧﻮد‬
‫ﻣﺎ ﻧﯿﺴﺖ ﺑﺎﯾﺪ از اﯾﻦ ﻣﻨﺎﺑﻊ ﺑﺮا دیر ﺗﻮ‬
‫اﻣﺎ ﻣﺎ ‪ Android apps.‬ﯾﺎ ‪iOS‬‬ ‫ﺑﺎﯾﺪ ﯾﮏ ﺧﺎرﺟﯽ‬ ‫در دﺳﺘﺮس اﺳﺖ ﮐﻪ ﺑﯿﺶ از ‪API 30‬‬
‫‪.‬در ﭘﺎﯾﮕﺎه داده >‪ <url‬ﺗﻮﺳﻌﻪ دﻫﻨﺪﮔﺎن اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد ﺑﻪ اﯾﺠﺎد ﺧﻮد را ﻓﻠﺸﮑﺎرت ﺑﺮﻧﺎﻣﻪ ﻫﺎی ﻃﺮاﺣﯽ ﺷﺪه ﺗﻮﺳﻂ‬
‫ﭼﻨﺪ ﺗﺎ از اﯾﻦ ﻧﺮم اﻓﺰار داﻧﻠﻮد ﺷﺪ ﺑﯿﺶ از ﯾﮏ ﻣﯿﻠﯿﻮن ﺑﺎر ﻏﻨﯽ ﺳﺎزی ﺗﻮﺳﻌﻪ دﻫﻨﺪﮔﺎن‬
‫ﺖ ‪. Quizlet‬در ﻫﻤﺎن زﻣﺎن ‪ Quizlet‬و اﻓﺰاﯾﺶ دﺳﺘﺮس‬
‫‪20‬‬
‫در ﺣﺎل ﺣﺎﺿﺮ ﺑﺎﻻیﺳﺎﯾ‬
‫‪.‬در اﯾﺎﻻت ﻣﺘﺤﺪه در ﻃﻮل ﺳﺎل ﺗﺤﺼﯿﻠﯽ‬

‫روش اول اﯾﻦ اﺳﺖ ﮐﻪ آن ﻧﯿﺎز ﺑﻪ ﺗﻨﻈﯿﻤﺎت ﺑﯿﺸﺘﺮ‪ API-‬ﻋﻤﺪه ﻧﺰوﻟﯽ ﺑﻪ‬
‫از ﺳﻨﺘﯽ ﺟﻨﮕﻮ‪ .‬اﻣﺎ ﺑﻪ ﻋﻨﻮان ﻣﺎ ﻣﯽ ﺑﯿﻨﯿﻢ در اﯾﻦ ﮐﺘﺎب ﻓﻮق اﻟﻌﺎده‬
‫‪.‬ﭼﺎرﭼﻮب ﮐﺘﺎﺑﺨﺎﻧﻪ ﺣﺬف ﺑﺴﯿﺎری از اﯾﻦ ﭘﯿﭽﯿﺪﮔﯽ اﺳﺖ ‪Django REST‬‬

‫ﭼﺎرﭼﻮب ‪Django REST‬‬

‫وﺟﻮد دارد ﺻﺪﻫﺎ و ﺻﺪﻫﺎ ﻧﻔﺮ از ﺑﺮﻧﺎﻣﻪ ﻫﺎی ﺷﺨﺺ ﺛﺎﻟﺚ در دﺳﺘﺮس اﺳﺖ ﮐﻪ اﺿﺎﻓﻪ ﮐﺮدن ﺑﯿﺸﺘﺮ و‬

‫ﺷﻤﺎ ﻣﯽ ﺗﻮاﻧﯿﺪ ﮐﺎﻣﻞ‪ ,‬ﺟﺴﺘﺠﻮ‪ ,‬ﻟﯿﺴﺖ ﺑﯿﺶ از( ‪ Django.‬ﻗﺎﺑﻠﯿﺖ‬ ‫‪Django‬‬


‫ﺑﺴﺘﻪ‬ ‫ﭼﺎرﭼﻮب ﻣﺴﻠﻤﺎ ‪ Django REST‬اﻣﺎ )‪.‬‬ ‫‪.‬اﯾﻦ ﺑﺮﻧﺎﻣﻪ ﻗﺎﺗﻞ ﺑﺮای ﺟﻨﮕﻮ‬

‫ﻣﻘﺪﻣﻪ‬ ‫‪4‬‬

‫‪.‬آن اﺳﺖ ﮐﻪ ﻗﺪﯾﻤﯽ ﮐﺎﻣﻞ از وﯾﮋﮔﯽ ﻫﺎی ﻗﺎﺑﻞ ﺗﻨﻈﯿﻢ ازﻣﺎﯾﺸﯽ و ﺑﺴﯿﺎر ﺧﻮﺑﯽ ﻣﺴﺘﻨﺪ ﺷﺪه اﺳﺖ‬
‫ﺳﻨﺘﯽ ﮐﻨﻮاﻧﺴﯿﻮن ﮐﻪ ﺑﺎﻋﺚ ﻣﯽ ﺷﻮد ‪ Django‬آن را ﻧﯿﺰ ﺑﻪ ﺻﻮرت ﻫﺪﻓﻤﻨﺪ ﺗﻘﻠﯿﺪ ﺑﺴﯿﺎری از‬
‫ﯾﮏ ‪ Python,‬ﯾﺎدﮔﯿﺮی آن ﺑﺴﯿﺎر ﺳﺮﯾﻊ ﺗﺮ اﺳﺖ‪ .‬و در آن ﻧﻮﺷﺘﻪ ﺷﺪه اﺳﺖ در زﺑﺎن ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬
‫‪.‬ﻓﻮق اﻟﻌﺎده ﻣﺤﺒﻮب و در دﺳﺘﺮس زﺑﺎن‬

‫ﭼﺎرﭼﻮب ﻣﻨﻄﻘﯽ ﺑﻌﺪی ‪ Django REST‬ﺳﭙﺲ آﻣﻮزش ‪ Django‬اﮔﺮ ﺷﻤﺎ در ﺣﺎل ﺣﺎﺿﺮ ﻣﯽ داﻧﯿﻢ‬
‫ﮔﺎم‪ .‬ﺑﺎ ﯾﮏ ﻣﻘﺪار ﺣﺪاﻗﻞ از اﯾﻦ ﮐﺪ ﻣﯽ ﺗﻮاﻧﯿﺪ ﺗﺒﺪﯾﻞ ﻫﺮ ﻣﻮﺟﻮد ﺟﻨﮕﻮ‬
‫‪ web API.‬ﺑﻪ ﯾﮏ‬

‫ﭼﺮا اﯾﻦ ﮐﺘﺎب‬

‫ﻣﻦ ﻧﻮﺷﺖ‪ :‬اﯾﻦ ﮐﺘﺎب ﺑﻪ دﻟﯿﻞ وﺟﻮد ﻣﺘﻤﺎﯾﺰ ﮐﻤﺒﻮد ﻣﻨﺎﺑﻊ ﺧﻮب در دﺳﺘﺮس ﺑﺮای‬
‫ﭼﺎرﭼﻮب اﺳﺖ‪ .‬اﯾﻦ ﻓﺮض ﺑﻪ ﻧﻈﺮ ﻣﯽ رﺳﺪ ﮐﻪ ‪ Django REST‬ﺗﻮﺳﻌﻪ دﻫﻨﺪﮔﺎن ﺟﺪﯾﺪ ﺑﻪ‬
‫اﺳﺘﺮاﺣﺖ و ﻣﺎﻧﻨﺪ آن‪ .‬ﺳﻔﺮ ﺧﻮد ﻣﻦ ‪, HTTP,‬ﻫﺮ ﮐﺲ در ﺣﺎل ﺣﺎﺿﺮ ﻣﯽ داﻧﺪ ﻫﻤﻪ ﭼﯿﺰ در ﻣﻮرد راﺑﻂ ﻫﺎی ﺑﺮﻧﺎﻣﻪ ﮐﺎرﺑﺮدی‬
‫ﻫﺎی ﻧﺎ اﻣﯿﺪ ﮐﻨﻨﺪه ﺑﻮد‪...‬و ﻣﻦ در ﺣﺎل ﺣﺎﺿﺮ ﻣﯽ داﻧﺴﺘﻢ ﮐﻪ ﺟﻨﮕﻮ ﺑﻪ ﺧﻮﺑﯽ ‪ Api‬در ﯾﺎدﮔﯿﺮی ﭼﮕﻮﻧﻪ ﺑﺮای ﺳﺎﺧﺖ وب ﺳﺎﯾﺖ‬
‫!ﺑﻪ اﻧﺪازه ﮐﺎﻓﯽ ﺑﺮای ﻧﻮﺷﺘﻦ ﯾﮏ ﮐﺘﺎب ﺑﺮ روی آن‬

‫‪.‬ﭼﺎرﭼﻮب اﺳﺖ ‪ Django REST‬اﯾﻦ ﮐﺘﺎب راﻫﻨﻤﺎی ﻣﻦ آرزو ﻣﯽ ﮐﻨﻢ وﺟﻮد داﺷﺘﻪ و در ﻫﻨﮕﺎم ﺷﺮوع‬

‫‪HTTP.‬ﻞ ‪ 1‬آﻏﺎز ﻣﯽ ﺷﻮد ﺑﺎ ﯾﮏ ﻣﻘﺪﻣﻪ ﮐﻮﺗﺎه ﺑﻪ راﺑﻂ ﻫﺎی ﺑﺮﻧﺎﻣﻪ ﮐﺎرﺑﺮدی وب و ﭘﺮوﺗﮑﻞ‬
‫ﻓﺼ‬ ‫در‬

‫‪Django‬ﻞ ‪ 2‬را ﺑﺮرﺳﯽ ﻣﯽ ﮐﻨﯿﻢ ﺑﻪ ﺗﻔﺎوت ﻫﺎی ﺑﯿﻦ ﺳﻨﺘﯽ ﺟﻨﮕﻮ و‬


‫ﻓﺼ‬ ‫‪REST‬‬

‫ﭼﺎرﭼﻮب ﺑﺎ ﺳﺎﺧﺘﻦ ﯾﮏ‬ ‫ﮐﺘﺎب ﺳﺎﯾﺖ و ﺳﭙﺲ اﺿﺎﻓﻪ ﮐﺮدن ﯾﮏ‬ ‫ﺑﻪ آن اﺳﺖ‪ .‬ﺳﭙﺲ ‪API‬‬

‫‪Todo‬ﻞ ‪ 4-3‬ﻣﺎ ﺑﺮای ﺳﺎﺧﺖ ﯾﮏ در‬


‫و اﺗﺼﺎل آن را ﺑﻪ واﮐﻨﺶ ﻧﺸﺎن ﻣﯽ دﻫﻨﺪ ﺟﻠﻮﯾﯽ‪ .‬ﻫﻤﯿﻦ ‪ API‬ﻓﺼ‬
‫آﻧﺪروﯾﺪ‪ ,‬دﺳﮑﺘﺎپ ‪ iOS,‬وب ﺳﺎﯾﺖ در—‪ (front-end‬روﻧﺪ را ﻣﯽ ﺗﻮان ﻣﻮرد اﺳﺘﻔﺎده ﺑﺮای اﺗﺼﺎل ﺑﻪ ﻫﺮ ﯾﮏ اﺧﺘﺼﺎص داده ﺷﺪه در ﺟﻠﻮ‬
‫‪.‬ﺑﻪ ﻋﻘﺐ ﭘﺎﯾﺎن ‪ web API‬و ﯾﺎ دﯾﮕﺮ—ﺑﻪ ﯾﮏ‬

‫در‬ ‫‪9-5‬ﺳﺎﺧﺖ ﺗﻮﻟﯿﺪ‪-‬آﻣﺎده‬


‫‪API‬ﻞ ﻣﺎ‬
‫ﮐﻪ ﺷﺎﻣﻞ ﺧﺎم ﮐﺎﻣﻞ ﻓﺼ‬
‫‪ viewsets,‬ﻋﻤﻠﮑﺮد‪ .‬ﻣﺎ ﻫﻤﭽﻨﯿﻦ ﭘﻮﺷﺶ در ﻋﻤﻖ ﻣﺠﻮز اﺣﺮاز ﻫﻮﯾﺖ ﮐﺎرﺑﺮ‬
‫‪.‬روﺗﺮ‪ ,‬اﺳﻨﺎد و ﻣﺪارک‪ ,‬و ﺑﯿﺸﺘﺮ‬
‫ﮐﺪ ﻣﻨﺒﻊ ﮐﺎﻣﻞ ﺑﺮای ﺗﻤﺎم ﻓﺼﻮل ﯾﺎﻓﺖ ﻣﯽ ﺷﻮد‬ ‫‪ Github‬آﻧﻼﯾﻦ در‬ ‫‪.‬‬

‫ﻣﻘﺪﻣﻪ‬ ‫‪5‬‬

‫ﻧﺘﻴﺠﻪ ﮔﻴﺮی‬

‫ﭼﺎرﭼﻮب ﻗﺪرﺗﻤﻨﺪ و در دﺳﺘﺮس راه ﺑﺮای ﺳﺎﺧﺖ وب و ‪ Django REST‬ﺟﻨﮕﻮ و‬


‫راﺑﻂ ﻫﺎی ﺑﺮﻧﺎﻣﻪ ﮐﺎرﺑﺮدی‪ .‬در ﭘﺎﯾﺎن اﯾﻦ ﮐﺘﺎب ﺷﻤﺎ را ﻗﺎدر ﺑﻪ ﺳﺎﺧﺖ وب ﺳﺎﯾﺖ ﺧﻮد را راﺑﻂ ﻫﺎی ﺑﺮﻧﺎﻣﻪ ﮐﺎرﺑﺮدی از اﺑﺘﺪا‬
‫‪ Django‬ﺑﻪ درﺳﺘﯽ ﺑﺎ اﺳﺘﻔﺎده از ﺑﻬﺘﺮﯾﻦ ﺷﯿﻮه ﻣﺪرن اﺳﺖ‪ .‬و ﺷﻤﺎ ﻗﺎدر ﺧﻮاﻫﯿﺪ ﺑﻮد ﺑﺮای ﮔﺴﺘﺮش ﻫﺮ ﻣﻮﺟﻮد‬
‫‪.‬ﺑﺎ ﯾﮏ ﻣﻘﺪار ﺣﺪاﻗﻞ از ﮐﺪ ‪ web API‬وب ﺳﺎﯾﺖ را ﺑﻪ ﯾﮏ‬

‫!ﺑﯿﺎﯾﯿﺪ ﺷﺮوع ﮐﻨﯿﻢ‬


‫ﻞ‪1‬‬
‫ﺼ‪:‬‬‫‪Web‬‬
‫ﻓ‬ ‫‪Api‬‬
‫اﯾﻦ ﻣﻬﻢ اﺳﺖ ﮐﻪ ﺑﻪ ﺑﺮرﺳﯽ ﭼﮕﻮﻧﻪ وب واﻗﻌﺎ ‪ web APIs‬ﻗﺒﻞ از اﯾﻨﮑﻪ ﻣﺎ ﺷﺮوع ﺑﻪ ﺳﺎﺧﺘﻤﺎن از ﺧﻮد ﻣﺎ‬

‫ﺑﻪ ﻣﻌﻨﺎی واﻗﻌﯽ ﮐﻠﻤﻪ ﻧﺸﺴﺘﻪ در ﺑﺎﻻی ﻣﻮﺟﻮد ﻣﻌﻤﺎری ﺟﻬﺎن "‪ "web API‬ﮐﺎر ﻣﯽ ﮐﻨﺪ‪ .‬ﭘﺲ از ﻫﻤﻪ ﯾﮏ‬
‫‪.‬و ﺑﯿﺸﺘﺮ ‪ HTTP, IP/TCP‬ﮔﺴﺘﺮده وب و ﻣﺘﮑﯽ ﺑﺮ ﯾﮏ ﻣﯿﺰﺑﺎن از ﻓﻦ آوری از ﺟﻤﻠﻪ‬

‫‪,‬ﻣﻨﺎﺑﻊ ‪ web Api: endpoints,‬در اﯾﻦ ﻓﺼﻞ ﻣﺎ ﺑﻪ ﺑﺮرﺳﯽ اﺻﻄﻼﺣﺎت ﭘﺎﯾﻪ از‬
‫و اﺳﺘﺮاﺣﺖ‪ .‬ﺣﺘﯽ اﮔﺮ ﺷﻤﺎ در ﺣﺎل ﺣﺎﺿﺮ اﺣﺴﺎس راﺣﺘﯽ ﺑﺎ ‪ HTTP‬اﻓﻌﺎل ﮐﺪﻫﺎی وﺿﻌﯿﺖ ‪HTTP‬‬

‫‪.‬اﯾﻦ ﺷﺮاﯾﻂ ﻣﻦ ﺷﻤﺎ را ﺗﺸﻮﯾﻖ ﺑﻪ ﺧﻮاﻧﺪن ﻓﺼﻞ ﮐﺎﻣﻞ‬

‫ﺷﺒﮑﻪ ﺟﻬﺎﻧﯽ وب‬

‫اﯾﻨﺘﺮﻧﺖ ﯾﮏ ﺳﯿﺴﺘﻢ ﺑﻪ ﻫﻢ ﭘﯿﻮﺳﺘﻪ ﺷﺒﮑﻪ ﻫﺎی ﮐﺎﻣﭙﯿﻮﺗﺮی اﺳﺖ ﮐﻪ وﺟﻮد داﺷﺘﻪ اﺳﺖ ﭘﺲ‬

‫‪1960 s‬‬
‫ﺣﺪاﻗﻞ‬ ‫اﻣﺎ اﯾﻨﺘﺮﻧﺖ اوﻟﯿﻪ اﺳﺘﻔﺎده ﺷﺪ و ﻣﺤﺪود ﺑﻪ ‪.‬‬
‫ﺗﻌﺪادی از ﺟﺪا ﺷﺪه ﺷﺒﮑﻪ ﻫﺎی ﻋﻤﺪﺗﺎ دوﻟﺘﯽ و ﻧﻈﺎﻣﯽ و ﻋﻠﻤﯽ در ﻃﺒﯿﻌﺖ‬

‫‪1980 s‬‬ ‫ﺤﻘﮑﯿﻘﯽﺎ‪.‬ﺗ ﺗ‬


‫ﯽﻮ وﺳﻂ‬ ‫تﺘﺮﺗوﻧﯿ‬
‫تﺴاﺎﻟﮑ‬
‫ﻋﺎﻮﺳ‬
‫یﻃازﻼ ﻣ‬
‫لا‬
‫ﺴﯿﺪﺎر‬
‫اﺳﺖ ﮐﻪ رد وﺑ ﺑ‬

‫داﻧﺸﮕﺎه ﻫﺎ ﺷﺪ و ﺑﺎ اﺳﺘﻔﺎده از اﯾﻨﺘﺮﻧﺖ ﺑﺮای ﺑﻪ اﺷﺘﺮاک ﮔﺬاﺷﺘﻦ اﻃﻼﻋﺎت‪ .‬در اروﭘﺎ ﺑﺰرﮔﺘﺮﯾﻦ اﯾﻨﺘﺮﻧﺖ‬
‫ﮔﺮه واﻗﻊ ﺷﺪه ﺑﻮد در ﺳﺮن )ﺳﺎزﻣﺎن ﭘﮋوﻫﺸﻬﺎی ﻫﺴﺘﻬﺎی اروﭘﺎ( در ژﻧﻮ‬

‫‪.‬ﺳﻮﺋﯿﺲ ﮐﻪ در ﻋﻤﻞ ﺑﺰرﮔﺘﺮﯾﻦ ﻓﯿﺰﯾﮏ ذرات آزﻣﺎﯾﺸﮕﺎﻫﯽ در ﺟﻬﺎن اﺳﺖ‬


‫اﯾﻦ آزﻣﺎﯾﺶ ﺗﻮﻟﯿﺪ ﻣﻘﺎدﯾﺮ زﯾﺎدی از داده ﻫﺎ اﺳﺖ ﮐﻪ ﻧﯿﺎز ﺑﻪ اﺷﺘﺮاک ﮔﺬاﺷﺘﻪ ﺷﻮد‬

‫‪.‬از راه دور ﺑﺎ داﻧﺸﻤﻨﺪان در ﺳﺮاﺳﺮ ﺟﻬﺎن اﺳﺖ‬

‫‪1980 s‬‬ ‫ﭼﯿاﺰز ﺑاﻮﯾﻨدﺘ‪.‬ﺮﻧاﮐﺜ‬


‫ﺖﺮ در‬ ‫در ﻣﻘﺎﯾﺴﻪ ﺑﺎ اﻣﺮوز ﻫﺮ ﭼﻨﺪ ﺑﻪ ﻃﻮر ﮐﻠﯽ اﺳﺘﻔﻧﺎﺎده‬

‫ﻣﺮدم ﺑﻪ آن دﺳﺘﺮﺳﯽ دارﻧﺪ و ﯾﺎ ﺣﺘﯽ درک و ﭼﺮا از آن ﻣﻬﻢ اﺳﺖ‪ .‬ﺗﻌﺪاد ﮐﻤﯽ‬

‫از اﯾﻨﺘﺮﻧﺖ ﮔﺮه ﺷﺪه ﺗﻤﺎم ﺗﺮاﻓﯿﮏ و ﮐﺎﻣﭙﯿﻮﺗﺮ ﺑﺎ اﺳﺘﻔﺎده از آن را در درﺟﻪ اول‬
‫‪.‬در درون ﻫﻤﺎن ﺷﺒﮑﻪ ﻫﺎی ﮐﻮﭼﮏ اﺳﺖ‬

‫ﻞ‪1‬‬
‫‪: Web‬‬
‫ﻓﺼ‬ ‫‪Api‬‬ ‫‪7‬‬

‫‪1989‬ر‬
‫‪CERN,‬ﺪل ﻣﺤﻘﻖ د‬
‫ﺳﺎﻨ‬ ‫‪Tim‬ﯾﻐﯿﯿ‬
‫ﮏﺮ دادﻧرﺸﻤ‬ ‫‪ Berners-Lee‬ﻫ‬
‫ﯽﻤﮐﻪﻪ ﺗ‬ ‫ازﯾﻣﺎﻦﻧ‬ ‫اﺧﺘﺮاع‬

‫و ﻃﻠﯿﻌﻪ ﻣﺪرن در ﺷﺒﮑﻪ ﺟﻬﺎﻧﯽ وب اﺳﺖ‪ .‬او ﺑﯿﻨﺶ ﺑﻮد ﮐﻪ اﯾﻦ ‪HTTP‬‬
‫ﻣﻮﺟﻮد‬ ‫اﺑﺮﻣﺘﻦ‬ ‫ﺳﯿﺴﺘﻢ ﮐﻪ در آن ﻣﺘﻦ ﻧﻤﺎﯾﺶ داده ﺷﺪه ﺑﺮ روی ﺻﻔﺤﻪ ﻧﻤﺎﯾﺶ ﮐﺎﻣﭙﯿﻮﺗﺮ ﻫﺎی ﻣﻮﺟﻮد در ﻟﯿﻨﮏ‬
‫‪.‬ﻟﯿﻨﮏ( ﺑﻪ دﯾﮕﺮ اﺳﻨﺎد ﻣﯽ ﺗﻮاﻧﺪ ﻧﻘﻞ ﻣﮑﺎن ﮐﺮد و ﺑﺮ روی اﯾﻨﺘﺮﻧﺖ(‬

‫اﺧﺘﺮاع ﺧﻮد را‬ ‫اوﻟﯿﻦ اﺳﺘﺎﻧﺪارد ﺟﻬﺎﻧﯽ )‪Hypertext Transfer Protocol (HTTP‬‬

‫‪:‬راه ﺑﺮای ﺑﻪ اﺷﺘﺮاک ﮔﺬاری اﺳﻨﺎد از ﻃﺮﯾﻖ اﯾﻨﺘﺮﻧﺖ‪ .‬آن را ﻃﻠﯿﻌﻪ ﻣﻔﻬﻮم ﺻﻔﺤﺎت وب‬
‫‪.‬ﻟﯿﻨﮏ‪ ,‬ﻣﻨﺎﺑﻊ‪ ,‬ﻣﺎﻧﻨﺪ ﺗﺼﺎوﯾﺮ‪ ,‬ﺻﻮﺗﯽ و ﯾﺎ ﺗﺼﻮﯾﺮی ‪ URL,‬ﮔﺴﺴﺘﻪ اﺳﻨﺎد ﺑﺎ ﯾﮏ‬

‫اﻣﺮوز ﻫﻨﮕﺎﻣﯽ ﮐﻪ اﮐﺜﺮ ﻣﺮدم ﻓﮑﺮ ﻣﯽ ﮐﻨﻢ از "اﯾﻨﺘﺮﻧﺖ" آﻧﻬﺎ ﻓﮑﺮ ﻣﯽ ﮐﻨﻢ از ﺷﺒﮑﻪ ﺟﻬﺎﻧﯽ وب‬
‫اﺳﺖ ﮐﻪ در ﺣﺎل ﺣﺎﺿﺮ راه اﺻﻠﯽ ﮐﻪ ﻣﯿﻠﯿﺎردﻫﺎ ﻧﻔﺮ از ﻣﺮدم و ﮐﺎﻣﭙﯿﻮﺗﺮ ارﺗﺒﺎط‬

‫‪.‬آﻧﻼﯾﻦ‬

‫آدرس‬

‫اﺳﺖ ﮐﻪ ﻧﺸﺎﻧﯽ از ﯾﮏ ﻣﻨﺒﻊ در اﯾﻨﺘﺮﻧﺖ‪ .‬ﺑﺮای )‪ URL (Uniform Resource Locator‬ﯾﮏ‬

‫در ﺻﻔﺤﻪ اﺻﻠﯽ زﻧﺪﮔﯽ در ‪ Google‬ﻣﺜﺎل‬ ‫‪https://www.google.com‬‬ ‫‪.‬‬

‫ﺑﻪ ﯾﮏ ‪ URL‬در ﺻﻔﺤﻪ اﺻﻠﯽ ﺷﻤﺎ ﺗﺎﯾﭗ ﮐﺎﻣﻞ آدرس ‪ Google‬ﻫﻨﮕﺎﻣﯽ ﮐﻪ ﺷﻤﺎ ﻣﯽ ﺧﻮاﻫﯿﺪ ﺑﺮای رﻓﺘﻦ ﺑﻪ‬

‫ﻣﺮورﮔﺮ وب اﺳﺖ‪ .‬ﻣﺮورﮔﺮ ﺷﻤﺎ ﻣﯽ ﻓﺮﺳﺘﺪ و ﺳﭙﺲ درﺧﻮاﺳﺖ ﺧﻮد را از ﻃﺮﯾﻖ اﯾﻨﺘﺮﻧﺖ و ﺟﺎدوﯾﯽ‬

‫ﻣﺘﺼﻞ )ﻣﺎ ﭘﻮﺷﺶ آﻧﭽﻪ در واﻗﻊ اﺗﻔﺎق ﻣﯽ اﻓﺘﺪ در ﻣﺪت ﮐﻮﺗﺎﻫﯽ( ﺑﻪ ﯾﮏ ﺳﺮور ﮐﻪ در ﭘﺎﺳﺦ ﺑﺎ‬
‫‪.‬اﻃﻼﻋﺎت ﻣﻮرد ﻧﯿﺎز ﺑﺮای رﻧﺪر اﺻﻠﯽ ﮔﻮﮔﻞ را در ﻣﺮورﮔﺮ ﺧﻮد را‬

‫اﯾﻦ‬ ‫درﺧﻮاﺳﺖ و ﭘﺎﺳاﻟﺦﮕﻮی اﺳﺖ ﮐﻪ ﺑﺮ اﺳﺎس ارﺗﺒﺎط وب‪ .‬ﯾﮏ ﻣﺸﺘﺮی‬


‫)ﺑﻪ ﻃﻮر ﻣﻌﻤﻮل ﯾﮏ ﻣﺮورﮔﺮ وب اﺳﺖ اﻣﺎ ﻫﻤﭽﻨﯿﻦ ﯾﮏ ﺑﺮﻧﺎﻣﻪ ﺑﻮﻣﯽ و ﯾﺎ واﻗﻌﺎ ﻫﺮ اﯾﻨﺘﺮﻧﺖ ﻣﺘﺼﻞ ﺑﻪ دﺳﺘﮕﺎه(‬

‫درﺧﻮاﺳﺖ اﻃﻼﻋﺎت و‬ ‫ﺳﺮور ﭘﺎﺳﺦ ﺑﺎ‬


‫‪.‬ﭘﺎﺳﺦ‬
‫‪ HTTP‬اﯾﻨﻬﺎ ﺷﻨﺎﺧﺘﻪ ﺷﺪه ﺗﺮ ﺑﻪ ﻃﻮر رﺳﻤﯽ ﺑﻪ ﻋﻨﻮان ‪ HTTP‬ﭘﺲ از ارﺗﺒﺎط وب رخ ﻣﯽ دﻫﺪ از ﻃﺮﯾﻖ‬

‫‪.‬ﭘﺎﺳﺦ ‪ HTTP‬درﺧﻮاﺳﺖ و‬

‫داده ﺷﺪه ﻧﯿﺰ ﭼﻨﺪﯾﻦ اﺟﺰای ﮔﺴﺴﺘﻪ‪ .‬ﺑﺮای ﻣﺜﺎل در ﻧﻈﺮ ﺑﮕﯿﺮﯾﺪ دوﺑﺎره ‪ URL‬در ﯾﮏ‬

‫‪https://www.google.com‬‬ ‫ﺑﺨﺶ اول ‪.‬‬ ‫‪https‬‬ ‫اﺷﺎره ﺑﻪ‬ ‫حﺘﻔﺎده ﻣﯽ ﺷﻮد‪ .‬آن را ﻣﯽ ﮔﻮﯾﺪ‬
‫ﻃاﺮﺳ‬

‫ﻞ‪1‬‬
‫‪: Web‬‬
‫ﻓﺼ‬ ‫‪Api‬‬ ‫‪8‬‬

‫ﻣﺮورﮔﺮ وب‬ ‫ﺑﺮای دﺳﺘﺮﺳﯽ ﺑﻪ ﻣﻨﺎﺑﻊ در ﻣﺤﻞ‪ .‬ﺑﺮای ﯾﮏ وب ﺳﺎﯾﺖ اﯾﻦ اﺳﺖ ﮐﻪ ﺑﻪ ﻃﻮر ﻣﻌﻤﻮل‬

‫‪http‬‬ ‫ﯾﺎ‬ ‫‪https‬‬ ‫اﻣﺎ آن را ﻧﯿﺰ ﻣﯽ ﺗﻮاﻧﺪ‬ ‫‪ftp‬‬ ‫ﺑﺮای اﯾﻤﯿﻞ و ﻏﯿﺮه‪ .‬ﺑﻌﺪی ‪smtp‬ﺑﺮای ﻓﺎﯾﻞ ﻫﺎی‬
‫ﺑﺨﺶ‬ ‫‪www.google.com‬‬ ‫اﺳﺖ‬ ‫‪ URL‬ﻧﺎم ﻣﯿﺰﺑﺎن ﯾﺎ ﻧﺎم واﻗﻌﯽ ﺳﺎﯾﺖ اﺳﺖ‪ .‬ﻫﺮ‬

‫‪.‬ﺷﺎﻣﻞ ﯾﮏ ﻃﺮح و ﯾﮏ ﻣﯿﺰﺑﺎن‬

‫ﺑﺴﯿﺎری از ﺻﻔﺤﺎت وب ﻧﯿﺰ ﺣﺎوی اﺧﺘﯿﺎری‬ ‫ﺑرﯿاهﺶ از ﺣﺪ‪ .‬اﮔﺮ ﺷﻤﺎ رﻓﺘﻦ ﺑﻪ ﺻﻔﺤﻪ اﺻﻠﯽ ﺑﺮای‬

‫در ﭘﺎﯾﺘﻮن‬ ‫‪https://www.python.org‬‬ ‫و ﺑﺎ ﮐﻠﯿﮏ ﺑﺮ روی ﻟﯿﻨﮏ ﺑﺮای ﺻﻔﺤﻪ "درﺑﺎره" ﺷﻤﺎ ﺧﻮاﻫﯿﺪ ﺑﻮد‬

‫ﻫﺪاﯾﺖ ﺑﻪ‬ ‫‪https://www.python.org/about/‬‬ ‫اﯾﻦ ‪.‬‬ ‫‪/‬درﺑﺎره‪/‬‬ ‫ﻗﻄﻌﻪ ﻣﺴﯿﺮ‬


‫‪.‬اﺳﺖ‬
‫ﻣﺎﻧﻨﺪ ‪ URL‬در ﺧﻼﺻﻪ ﻫﺮ‬ ‫‪https://python.org/about/‬‬ ‫ﺳﻪ ﺑﺎﻟﻘﻮه و‬
‫‪:‬ﻗﻄﻌﺎت‬

‫‪ -‬ﯾﮏ ﻃﺮح •‬ ‫‪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‬‬

‫‪.‬ﺑﺎﯾﺖ ﺑﯿﻦ دو ﻧﺮم اﻓﺰار اﺳﺖ‬

‫"ﺑﯿﻦ دو ﮐﺎﻣﭙﯿﻮﺗﺮ در ﺳﻪ راه "دﺳﺖ دادن ‪ TCP‬ﺑﺮای اﯾﺠﺎد ﯾﮏ اﺗﺼﺎل‬

‫‪:‬رخ ﻣﯽ دﻫﺪ ﺑﯿﻦ ﮐﻼﯾﻨﺖ و ﺳﺮور‬

‫ﻣﺸﺘﺮی ﻣﯽ ﻓﺮﺳﺘﺪ ‪1.‬‬ ‫اﺗﺼﺎل ‪SYN‬‬ ‫درﺧﻮاﺳﺖ ﺑﺮای اﯾﺠﺎد ﯾﮏ‬

‫ﭘﺎﺳﺦ ﺳﺮور ‪2.‬‬ ‫‪SYN-ACK‬‬ ‫ﺑﺎ اذﻋﺎن ﺑﻪ درﺧﻮاﺳﺖ و ﻋﺒﻮر‬

‫اﺗﺼﺎل ﭘﺎراﻣﺘﺮ‬
‫ﻣﺸﺘﺮی ﻣﯽ ﻓﺮﺳﺘﺪ ‪3.‬‬ ‫اﺗﺼﺎل ‪ACK‬‬ ‫ﺑﻪ ﺳﺮور ﺗﺎﯾﯿﺪ‬

‫اﯾﺠﺎد ﺷﺪه اﺳﺖ دو ﮐﺎﻣﭙﯿﻮﺗﺮ ﻣﯽ ﺗﻮاﻧﯿﺪ ﺷﺮوع ﺑﻪ ﺑﺮﻗﺮاری ارﺗﺒﺎط ‪ TCP‬ﻫﻨﮕﺎﻣﯽ ﮐﻪ اﺗﺼﺎل‬
‫‪ HTTP.‬از ﻃﺮﯾﻖ‬

‫اﻓﻌﺎل ‪HTTP‬‬
‫و ﻫﻤﭽﻨﯿﻦ ﺑﻪ ﻋﻨﻮان ﯾﮏ ﻟﯿﺴﺖ از ﺗﺎﯾﯿﺪ اﻗﺪاﻣﺎت )‪ (URL‬ﻫﺮ ﺻﻔﺤﻪ وب ﺷﺎﻣﻞ ﻫﺮ دو ﯾﮏ آدرس‬

‫ﻓﻌﻞ اﺳﺖ‪ .‬ﺗﺎ ﮐﻨﻮن ﻣﺎ ﺑﻪ ﻃﻮر ﻋﻤﺪه در ﻣﻮرد ﮔﺮﻓﺘﻦ ﯾﮏ ﺻﻔﺤﻪ وب اﺳﺖ‪ ,‬اﻣﺎ آن را ﻧﯿﺰ ‪ HTTP‬ﺷﻨﺎﺧﺘﻪ ﺷﺪه ﺑﻪ ﻋﻨﻮان‬
‫‪.‬ﻣﻤﮑﻦ اﺳﺖ ﺑﺮای اﯾﺠﺎد‪ ,‬وﯾﺮاﯾﺶ و ﺣﺬف ﻣﺤﺘﻮا‬

‫ﺳﺎﯾﺖ‪ .‬ﭘﺲ از ورود ﺷﻤﺎ ﻣﯽ ﺗﻮاﻧﯿﺪ ﺟﺪول زﻣﺎﻧﯽ ﺧﻮد را اﯾﺠﺎد ‪ Facebook‬در ﻧﻈﺮ ﺑﮕﯿﺮﯾﺪ‬

‫‪-Update-‬ﯾﮏ ﭘﺴﺖ ﺟﺪﯾﺪ و ﯾﺎ وﯾﺮاﯾﺶ‪/‬ﺣﺬف ﯾﮏ ﻣﻮﺟﻮد اﺳﺖ‪ .‬اﯾﻦ ﭼﻬﺎر ﻋﻤﻠﯿﺎت اﯾﺠﺎد‪-‬ﺟﺰﺋﯿﺎت‬

‫ﺷﻨﺎﺧﺘﻪ ﺷﺪه در ﻣﺤﺎوره ﺑﻪ ﻋﻨﻮان ﺧﺎم ﻗﺎﺑﻠﯿﺖ و ﻧﺸﺎن دﻫﻨﺪه ﻗﺮﯾﺐ ﺑﻪ اﺗﻔﺎق ‪Delete‬‬
‫‪.‬اﮐﺜﺮ اﻗﺪاﻣﺎت ﺻﻮرت ﮔﺮﻓﺘﻪ آﻧﻼﯾﻦ‬

‫ﭘﺮوﺗﮑﻞ ﺷﺎﻣﻞ ﺗﻌﺪادی از ‪HTTP‬‬ ‫روش درﺧﻮاﺳﺖ‬ ‫ﮐﻪ ﻣﯽ ﺗﻮاﻧﺪ ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﮔﯿﺮد در ﺣﺎﻟﯽ ﮐﻪ‬
‫‪ func-‬درﺧﻮاﺳﺖ اﻃﻼﻋﺎت از ﺳﺮور‪ .‬ﭼﻬﺎر ﺷﺎﯾﻊ ﺗﺮﯾﻦ ﻧﻘﺸﻪ ﺧﺎم‬

‫آﻧﻬﺎ ‪tionality.‬‬ ‫ﭘﺴﺖ‬ ‫ﻗﺮاور دادن د‪,‬رﯾﺎﻓﺖ ‪,‬‬ ‫ﺣﺬف‬ ‫‪.‬‬

‫ﻞ‪1‬‬
‫‪: Web‬‬
‫ﻓﺼ‬ ‫‪Api‬‬ ‫‪10‬‬

‫ﻧﻤﻮدار‬

‫ﺧﺎم‬ ‫اﻓﻌﺎل ‪HTTP‬‬

‫‪----‬‬ ‫‪----------‬‬

‫اﯾﺠﺎد‬ ‫>‪<--------------------‬‬ ‫ﭘﺴﺖ‬

‫ﺑﺨﻮاﻧﯿﺪ‬ ‫>‪<--------------------‬‬ ‫درﯾﺎﻓﺖ‬

‫ﺑﻪ روز رﺳﺎﻧﯽ‬ ‫>‪<--------------------‬‬ ‫ﻗﺮار دادن‬

‫ﺣﺬف‬ ‫>‪<--------------------‬‬ ‫ﺣﺬف‬

‫ﺑﺮای اﯾﺠﺎد ﻣﺤﺘﻮای ﺷﻤﺎ ﺑﺎ اﺳﺘﻔﺎده از‬ ‫ﭘﺴﺖ‬ ‫ﺑﺮای ﺧﻮاﻧﺪن ﻣﻄﺎﻟﺐ‬ ‫نرﯾﺎﻓﺖ‬
‫آد‬ ‫ﺑﻪ روز رﺳﺎﻧﯽ‬ ‫ﮐﻨﻗﯿﺮاﺪر دادن‬ ‫و ﺑﻪ آن را ﺣﺬف‬

‫ف ﺑﺎ اﺳﺘﻔﺎده از‬
‫ﺣﺷﺬﻤﺎ‬ ‫‪.‬‬

‫ﻧﻘﻄﻪ اﻧﺘﻬﺎﯾﯽ‬

‫و ﺑﯿﺸﺘﺮ‪ .‬اﻣﺎ ‪ HTML, CSS, images, JavaScript,‬ﯾﮏ وب ﺳﺎﯾﺖ ﺷﺎﻣﻞ ﺻﻔﺤﺎت وب ﺑﺎ‬

‫تﺳﺖ ‪ web API‬ﯾﮏ‬


‫ﺑﻪ ﺟﺎی آن ﮐﻪ آدرس ﻫﺎ ﺑﺎ ﯾﮏ ﻟﯿﺴﺖ در دﺳﺘﺮس اﻗﺪاﻣﺎ ا‬ ‫‪(HTTP‬‬

‫اﻓﻌﺎل( اﺳﺖ ﮐﻪ اﻓﺸﺎی اﻃﻼﻋﺎت )ﺑﻪ ﻃﻮر ﻣﻌﻤﻮل در‬ ‫ﮐﻪ راﯾﺞ ﺗﺮﯾﻦ ﻓﺮﻣﺖ داده‪JSON‬‬

‫‪).‬ﭼﺎرﭼﻮب ‪ Django REST‬و اﯾﻦ روزﻫﺎ ﺑﻪ ﻃﻮر ﭘﯿﺶ ﻓﺮض ﺑﺮای‬

‫ﺑﺮای ﯾﮏ وب ﺳﺎﯾﺖ ﺟﺪﯾﺪ ﺑﻪ ﻧﺎم ‪ API‬ﺑﺮای ﻣﺜﺎل ﻣﺎ ﻣﯽ ﺗﻮاﻧﺪ اﯾﺠﺎد زﯾﺮ ﻧﻘﻄﻪ اﻧﺘﻬﺎﯾﯽ‬

‫‪mysite‬‬ ‫‪.‬‬

‫ﻧﻤﻮدار‬

‫‪https://www.mysite.com/api/users‬‬ ‫درﯾﺎﻓﺖ ﺑﺎزده ﺗﻤﺎم ﮐﺎرﺑﺮان ‪#‬‬

‫درﯾﺎﻓﺖ ﺑﺎزده ﯾﮏ ﮐﺎرﺑﺮ ‪https://www.mysite.com/api/users/<id> #‬‬

‫‪ ،‬در ﻧﻘﻄﻪ ﭘﺎﯾﺎﻧﯽ‬ ‫ﮐﺎرﺑﺮان‪/api/‬‬ ‫ﯾﮏ ﻣﻮﺟﻮد‬ ‫دﺳﺘﺮسدرﯾﺎﻓﺖ‬ ‫درﺧﻮاﺳﺖ ﺑﺎزﮔﺸﺖ ﯾﮏ ﻟﯿﺴﺖ از ﻫﻤﻪ در‬
‫ﮐﺎرﺑﺮان اﺳﺖ‪ .‬اﯾﻦ ﻧﻮع از ﭘﺎﯾﺎﻧﯽ ﮐﻪ ﺑﺎزده ﭼﻨﺪﮔﺎﻧﻪ داده ﻫﺎ از ﻣﻨﺎﺑﻊ ﺷﻨﺎﺧﺘﻪ ﺷﺪه اﺳﺖ ﺑﻪ ﻋﻨﻮان ﯾﮏ‬
‫‪.‬ﻣﺠﻤﻮﻋﻪ‬
‫ﺑﺨﺶ دوم و ﭘﺎﯾﺎﻧﯽ‬ ‫>‪/<id‬ﮐﺎرﺑﺮان‪/api/‬‬ ‫ﻧﺸﺎن دﻫﻨﺪه ﯾﮏ ﮐﺎرﺑﺮ‪ .‬ﯾﮏ‬ ‫ﺑﺎزﮔﺸﺖدرﯾﺎﻓﺖ‬ ‫درﺧﻮاﺳﺖ‬

‫‪.‬اﻃﻼﻋﺎت در ﻣﻮرد ﮐﻪ ﻓﻘﻂ ﯾﮏ ﮐﺎرﺑﺮ‬

‫ﻞ‪1‬‬
‫‪: Web‬‬
‫ﻓﺼ‬ ‫‪Api‬‬ ‫‪11‬‬

‫ﭘﺴﺖ اﮔﺮ ﻣﺎ اﺿﺎﻓﻪ ﺷﺪه‬ ‫ﺑﻪ اوﻟﯿﻦ ﻧﻘﻄﻪ ﭘﺎﯾﺎﻧﯽ ﻣﺎ ﻣﯽ ﺗﻮاﻧﺪ اﯾﺠﺎد ﯾﮏ ﮐﺎرﺑﺮ ﺟﺪﯾﺪ در ﺣﺎﻟﯽ ﮐﻪ ﺑﺎ اﺿﺎﻓﻪ ﮐﺮدن‬ ‫ﺣﺬف‬

‫‪.‬ﺑﻪ دوﻣﯿﻦ ﻧﻘﻄﻪ ﭘﺎﯾﺎﻧﯽ ﺧﻮاﻫﺪ ﺑﻪ ﻣﺎ اﺟﺎزه ﻣﯽ دﻫﺪ ﺑﺮای ﺣﺬف ﯾﮏ ﮐﺎرﺑﺮ‬

‫ﻧﻘﻄﻪ اﻧﺘﻬﺎﯾﯽ در ﻃﻮل دوره از اﯾﻦ ‪ API‬ﻣﺎ ﺗﺒﺪﯾﻞ ﺧﻮاﻫﺪ ﺷﺪ ﺑﺴﯿﺎر ﺑﯿﺸﺘﺮ آﺷﻨﺎ ﺑﺎ‬
‫ﺷﺎﻣﻞ ﺳﺎﺧﺖ ﯾﮏ ﺳﺮی از ﻧﻘﻄﻪ اﻧﺘﻬﺎﯾﯽ‪ :‬آدرس ﻫﺎ ﺑﺎ ‪ API‬ﮐﺘﺎب اﻣﺎ در ﻧﻬﺎﯾﺖ اﯾﺠﺎد ﯾﮏ‬

‫‪.‬ﻓﻌﻞ اﺳﺖ ‪ HTTP‬ارﺗﺒﺎط‬

‫ﺗﺼﺎوﯾﺮ و ﺑﯿﺸﺘﺮ‪ .‬اﻣﺎ ﯾﮏ ﻧﻘﻄﻪ ﭘﺎﯾﺎﻧﯽ اﺳﺖ ‪ HTML, CSS,‬ﯾﮏ ﺻﻔﺤﻪ وب ﺷﺎﻣﻞ‬ ‫ﯾﮏ راه ﺑﺮای‬

‫‪.‬ﻓﻌﻞ اﺳﺖ ‪ HTTP‬دﺳﺘﺮﺳﯽ ﺑﻪ داده ﻫﺎ از ﻃﺮﯾﻖ در دﺳﺘﺮس‬

‫‪HTTP‬‬

‫در اﯾﻦ ﻓﺼﻞ اﻣﺎ در اﯾﻨﺠﺎ ﻣﺎ ﺑﻪ ﺗﻮﺻﯿﻒ آﻧﭽﻪ در ‪ HTTP‬ﻣﺎ در ﺣﺎل ﺣﺎﺿﺮ ﺻﺤﺒﺖ ﻫﺎی زﯾﺎدی در ﻣﻮرد‬

‫‪.‬آن واﻗﻊ اﺳﺖ و ﭼﮕﻮﻧﻪ ﮐﺎر ﻣﯽ ﮐﻨﺪ‬

‫ﯾﮏ ‪HTTP‬‬ ‫ﭘﺮوﺗﮑﻞ ﺑﯿﻦ دو ﮐﺎﻣﭙﯿﻮﺗﺮ ﮐﻪ دارای ﯾﮏ ﻣﻮﺟﻮد‬

‫ﮐﺎﻣﭙﯿﻮﺗﺮ ﺳﺎﺧﺖ درﺧﻮاﺳﺖ ﺷﺪه اﺳﺖ ﺑﻪ ﻋﻨﻮان ﺷﻨﺎﺧﺘﻪ ﺷﺪه ‪ TCP.‬اﺗﺼﺎل‬ ‫در ﺣﺎﻟﯽ ﮐﻪ‬

‫ﮐﺎﻣﭙﯿﻮﺗﺮ ﭘﺎﺳﺦ ﺷﻨﺎﺧﺘﻪ ﺷﺪه اﺳﺖ ﺑﻪ ﻋﻨﻮان‬ ‫‪ .‬ﺑﻪ ﻃﻮر ﻣﻌﻤﻮل ﯾﮏ ﻣﺸﺘﺮی اﺳﺖ ﮐﻪ ﯾﮏ ﻣﺮورﮔﺮ وب اﺳﺖ اﻣﺎ‬

‫ﯾﺎ واﻗﻌﺎ ﻫﺮ اﯾﻨﺘﺮﻧﺖ ﻣﺘﺼﻞ ﺑﻪ دﺳﺘﮕﺎه‪ .‬ﯾﮏ ﺳﺮور ﯾﮏ ‪ iOS‬ﻫﻤﭽﻨﯿﻦ ﻣﯽ ﺗﻮاﻧﺪ ﯾﮏ ﺑﺮﻧﺎﻣﻪ‬
‫ﻧﺎم ﻓﺎﻧﺘﺰی ﺑﺮای ﻫﺮ ﮐﺎﻣﭙﯿﻮﺗﺮ و ﺑﻬﯿﻨﻪ ﺳﺎزی ﺷﺪه ﺑﺮای ﮐﺎر ﺑﺮ روی اﯾﻨﺘﺮﻧﺖ اﺳﺖ‪ .‬ﻫﻤﻪ ﻣﺎ واﻗﻌﺎ ﻧﯿﺎز‬

‫ﺑﻪ ﺗﺒﺪﯾﻞ ﯾﮏ ﭘﺎﯾﻪ ﻟﭗ ﺗﺎپ را ﺑﻪ ﯾﮏ ﺳﺮور اﺳﺖ ﮐﻪ ﺑﺮﺧﯽ از ﻧﺮم اﻓﺰار ﺧﺎص و ﻣﺪاوم‬

‫‪.‬اﺗﺼﺎل ﺑﻪ اﯾﻨﺘﺮﻧﺖ‬

‫ﭘﯿﺎم ﺷﺎﻣﻞ ﯾﮏ درﺧﻮاﺳﺖ‪/‬وﺿﻌﯿﺖ ﺧﻂ ﻫﺪر و اﺧﺘﯿﺎری ﺑﺪن ‪ HTTP‬ﻫﺮ‬

‫ﭘﯿﺎم اﺳﺖ ﮐﻪ ﯾﮏ ﻣﺮورﮔﺮ ﻣﻤﮑﻦ اﺳﺖ ارﺳﺎل ﺑﻪ ‪ HTTP‬داده اﺳﺖ‪ .‬ﺑﺮای ﻣﺜﺎل در اﯾﻨﺠﺎ ﯾﮏ ﻧﻤﻮﻧﻪ‬
‫درﺧﻮاﺳﺖ ﮔﻮﮔﻞ ﺻﻔﺤﻪ ﺧﺎﻧﮕﯽ واﻗﻊ در‬ ‫‪https://www.google.com‬‬ ‫‪.‬‬
‫ﻞ‪1‬‬
‫‪: Web‬‬
‫ﻓﺼ‬ ‫‪Api‬‬ ‫‪12‬‬

‫ﻧﻤﻮدار‬

‫‪GET / HTTP/1.1‬‬

‫‪: google.com‬ﻣﯿﺰﺑﺎن‬

‫‪Accept_Language: en-US‬‬

‫ﺧﻂ ﺑﺎﻻ ﺷﻨﺎﺧﺘﻪ ﺷﺪه اﺳﺖ ﺑﻪ ﻋﻨﻮان‬ ‫و آن را ﻣﺸﺨﺺ‬ ‫( روش اﺳﺘﻔﺎده ‪HTTP‬‬ ‫‪),‬رﯾﺎﻓﺖ‬
‫د‬

‫( ﻣﺴﯿﺮ‬ ‫‪/‬‬ ‫( اﺳﺘﻔﺎده ﮐﻨﯿﺪ ‪ HTTP‬و ﻧﺴﺨﻪ ﺧﺎص از )‬ ‫‪HTTP/1.1‬‬ ‫‪).‬‬

‫‪ HTTP headers:‬اﯾﻦ دو ﭘﺲ از آن ﺧﻄﻮط‬ ‫ﻣﯿﺰﺑﺎن‬ ‫اﺳﺖ ﻧﺎم داﻣﻨﻪ و‬ ‫‪Accept_-‬‬

‫زﺑﺎن‬ ‫اﯾﻦ زﺑﺎن ﺑﺮای اﺳﺘﻔﺎده در اﯾﻦ ﻣﻮرد زﺑﺎن اﻧﮕﻠﯿﺴﯽ آﻣﺮﯾﮑﺎﯾﯽ‪ .‬وﺟﻮد دارد ﺑﺴﯿﺎری از‬ ‫‪HTTP‬‬
‫ﻋﻨﺎوﯾﻦ‬ ‫‪.‬در دﺳﺘﺮس اﺳﺖ‬

‫ﭘﯿﺎم ﻧﯿﺰ اﺧﺘﯿﺎری‪ ,‬ﺑﺨﺶ ﺳﻮم‪ ,‬ﺷﻨﺎﺧﺘﻪ ﺷﺪه ﺑﻪ ﻋﻨﻮان ﺑﺪن‪ .‬ﺑﺎ اﯾﻦ ﺣﺎل ﻣﺎ ‪HTTP‬‬

‫‪.‬ﭘﺎﺳﺦ ﺣﺎوی اﻃﻼﻋﺎت ‪ HTTP‬ﺗﻨﻬﺎ ﺑﺎ ﻣﺸﺎﻫﺪه ﺑﺪن در ﺑﺪن ﭘﯿﺎم ﺑﺎ‬

‫‪ HTML‬در ﺻﻔﺤﻪ اﺻﻠﯽ ﻓﻘﻂ ﺷﺎﻣﻞ ‪ Google‬ﺑﻪ ﺳﺎدﮔﯽ اﺟﺎزه دﻫﯿﺪ ﻓﺮض ﮐﻨﯿﻢ ﮐﻪ‬

‫ﭘﯿﺎم از ﺳﺮور ﮔﻮﮔﻞ ﻣﻤﮑﻦ اﺳﺖ ‪ HTTP‬ﺳﻼم ﺟﻬﺎن!" اﯾﻦ ﭼﯿﺰی اﺳﺖ ﮐﻪ ﭘﺎﺳﺦ"‬
‫‪.‬ﻣﺎﻧﻨﺪ ﻧﮕﺎه‬

‫ﻧﻤﻮدار‬

‫‪HTTP/1.1 200 OK‬‬

‫‪: Tue, 28 Oct 2019 23:26:07 GMT‬ﺗﺎرﯾﺦ‬

‫‪: gws‬ﺳﺮور‬

‫ﻗﺒﻮل‪-‬ﻣﺤﺪوده‪ :‬ﺑﺎﯾﺖ‬

‫ﻣﺤﺘﻮا‪-‬ﻇﻬﺮ‪13 :‬‬

‫‪Content-Type: text/html; charset=UTF-8‬‬

‫ﺳﻼم‬
‫!ﺟﻬﺎن‬

‫ﺧﻂ ﺑﺎﻻ اﺳﺖ‬ ‫و اﯾﻦ ﻣﺸﺨﺺ اﺳﺖ ﮐﻪ ﻣﺎ ﺑﺎ اﺳﺘﻔﺎده از‬ ‫‪HTTP/1.1‬‬ ‫وﺿﻌﯿﺖ ‪.‬‬

‫ﮐﺪ‬ ‫‪200 OK‬‬ ‫ﻧﺸﺎن ﻣﯽ دﻫﺪ اﯾﻦ درﺧﻮاﺳﺖ ﺗﻮﺳﻂ ﻣﺸﺘﺮی ﻣﻮﻓﻖ ﺑﻮد )ﺑﯿﺸﺘﺮ در ﻣﻮرد ﮐﺪﻫﺎی وﺿﻌﯿﺖ‬
‫در ﻣﺪت‬
‫‪).‬ﮐﻮﺗﺎﻫﯽ‬

‫ﻞ‪1‬‬
‫‪: Web‬‬
‫ﻓﺼ‬ ‫‪Api‬‬ ‫‪13‬‬

‫و در ﻧﻬﺎﯾﺖ ‪ HTTP headers.‬ﺑﻌﺪ از ﻫﺸﺖ ﺧﻄﻮط‬ ‫ﻣﺎ وﺟﻮد دارد واﻗﻌﯽ‬


‫‪ "Hello, world!".‬ﺑﺪن ﻣﺤﺘﻮای‬
‫ﭘﯿﺎم‪ ,‬آﯾﺎ ﯾﮏ درﺧﻮاﺳﺖ و ﯾﺎ ﭘﺎﺳﺦ رو زﯾﺮ ‪ HTTP‬ﻫﺮ‬

‫‪:‬ﻓﺮﻣﺖ‬
‫ﻧﻤﻮدار‬

‫ﭘﺎﺳﺦ‪/‬درﺧﻮاﺳﺖ ﺧﻂ‬

‫‪...‬ﻋﻨﺎوﯾﻦ‬

‫اﺧﺘﯿﺎری( ﺑﺪن(‬

‫‪ HTTP/re-‬اﮐﺜﺮ ﺻﻔﺤﺎت وب ﺷﺎﻣﻞ ﻣﻨﺎﺑﻊ ﻣﺘﻌﺪد اﺳﺖ ﮐﻪ ﻧﯿﺎز ﺑﻪ ﭼﻨﺪﯾﻦ درﺧﻮاﺳﺖ‬

‫و ﯾﮏ ﺗﺼﻮﯾﺮ ﺳﻪ ﺳﻔﺮﻫﺎی ﺟﺪاﮔﺎﻧﻪ ‪ CSS‬ﺑﻪ ﺣﺎل ﯾﮏ ﻓﺎﯾﻞ ‪ HTML‬ﭼﺮﺧﻪ‪ .‬اﮔﺮ ﯾﮏ ﺻﻔﺤﻪ وب ‪sponse‬‬
‫ﺑﻪ ﻋﻘﺐ و ﺟﻠﻮ ﺑﯿﻦ ﮐﻼﯾﻨﺖ و ﺳﺮور ﺧﻮاﻫﺪ ﺑﻮد ﻻزم اﺳﺖ ﻗﺒﻞ از ﺗﮑﻤﯿﻞ‬

‫‪.‬ﺻﻔﺤﻪ وب ﻣﯽ ﺗﻮاﻧﺪ اراﺋﻪ ﺷﺪه در ﻣﺮورﮔﺮ‬

‫ﮐﺪﻫﺎی وﺿﻌﯿﺖ‬

‫در آدرس ﻫﯿﭻ ﺗﻀﻤﯿﻨﯽ وﺟﻮد ﻧﺪارد ‪ HTTP‬ﻫﻨﮕﺎﻣﯽ ﮐﻪ ﻣﺮورﮔﺮ وب ﺧﻮد را اﻋﺪام ﮐﺮده اﺳﺖ ﯾﮏ درﺧﻮاﺳﺖ‬
‫ﻫﻤﻪ ﭼﯿﺰ را در واﻗﻊ ﮐﺎر! ﺑﻨﺎﺑﺮاﯾﻦ ﯾﮏ ﻟﯿﺴﺖ ﺑﺴﯿﺎر ﻃﻮﻻﻧﯽ از‬ ‫‪ 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‬‬

‫‪.‬ﺧﻮد را ‪ HTTP‬وب ﺳﺎﯾﺖ و در ﻋﯿﻦ ﺣﺎل از آن ﭘﺸﺘﯿﺒﺎﻧﯽ ﻧﻤﯽ ﺷﻮد در‬

‫در ﻃﻮل ﺗﺎرﯾﺦ دوﻟﺖ ﻧﮕﻬﺪاری ﻣﯽ ﺷﺪ ﺑﺮ روی ﺳﺮور اﻣﺎ آن ﻣﻨﺘﻘﻞ ﺷﺪه اﺳﺖ ﺑﯿﺸﺘﺮ و ﺑﯿﺸﺘﺮ ﺑﻪ‬

‫ﻣﺎﻧﻨﺪ واﮐﻨﺶ ﻧﺸﺎن ﻣﯽ دﻫﻨﺪ و زاوﯾﻪ ای و ‪ (front-end frameworks‬ﻣﺸﺘﺮی ﻣﺮورﮔﺮ وب ﻣﺪرن در ﺟﻠﻮ‬
‫ﻣﺎ ﺑﻪ ﺷﻤﺎ اﻃﻼﻋﺎت ﺑﯿﺸﺘﺮ در ﻣﻮرد دوﻟﺖ زﻣﺎﻧﯽ ﮐﻪ ﻣﺎ ﭘﻮﺷﺶ اﺣﺮاز ﻫﻮﯾﺖ ﮐﺎرﺑﺮ اﻣﺎ ﺑﻪ ﯾﺎد داﺷﺘﻪ ﺑﺎﺷﯿﺪ ‪Vue.‬‬

‫اﺳﺖ ﺑﺪون ﺗﺎﺑﻌﯿﺖ‪ .‬اﯾﻦ ﺑﺎﻋﺚ ﻣﯽ ﺷﻮد آن را ﺑﺴﯿﺎر ﺧﻮب و ﻗﺎﺑﻞ اﻋﺘﻤﺎد ﺑﺮای ارﺳﺎل اﻃﻼﻋﺎت ‪ HTTP‬ﮐﻪ‬

‫ﻞ‪1‬‬
‫‪: Web‬‬
‫ﻓﺼ‬ ‫‪Api‬‬ ‫‪15‬‬

‫ﺑﯿﻦ دو ﮐﺎﻣﭙﯿﻮﺗﺮ‪ ,‬اﻣﺎ ﺑﺪ در ﺑﻪ ﺧﺎﻃﺮ ﺳﭙﺮدن ﻫﺮ ﭼﯿﺰی ﺧﺎرج از ﻫﺮ ﻓﺮد‬

‫‪.‬درﺧﻮاﺳﺖ‪/‬ﭘﺎﺳﺦ ﺟﻔﺖ‬

‫ﺑﻘﯿﻪ‬

‫)ﺑﺎزﻧﻤﻮدی دوﻟﺖ اﻧﺘﻘﺎل )اﺳﺘﺮاﺣﺖ‬ ‫‪2000‬ﻂ‬


‫ﯾﮏ ﻣﻌﻤﺎری ﺑﺮای اوﻟﯿﻦ ﺑﺎر ﭘﯿﺸﻨﻬﺎد در ﺳﺎل ﺗﻮﺳ‬

‫در ﭘﺎﯾﺎن ﻧﺎﻣﻪ ﭘﺎﯾﺎن ﻧﺎﻣﻪ‪ .‬اﯾﻦ روﯾﮑﺮد ﺑﻪ ﺳﺎﺧﺖ راﺑﻂ ﻫﺎی ﺑﺮﻧﺎﻣﻪ ﮐﺎرﺑﺮدی در ﺑﺎﻻی ‪Roy Fielding‬‬
‫‪ HTTP.‬وب ﮐﻪ ﺑﺪان ﻣﻌﻨﯽ اﺳﺖ ﮐﻪ در ﺑﺎﻻ از ﭘﺮوﺗﮑﻞ‬

‫در واﻗﻊ آرام ﯾﺎ ﻧﻪ‪ .‬اﻣﺎ ‪ API‬ﺗﻤﺎم ﮐﺘﺎب ﻫﺎی ﻧﻮﺷﺘﻪ ﺷﺪه ﺑﺮ روی ﭼﻪ ﭼﯿﺰی ﺑﺎﻋﺚ ﻣﯽ ﺷﻮد ﯾﮏ‬

‫‪ RESTful‬ﺑﺎ وﺟﻮد ﺻﻔﺎت اﺻﻠﯽ اﺳﺖ ﮐﻪ ﻣﺎ را ﺑﻪ ﺗﻤﺮﮐﺰ ﺑﺮ روی اﯾﻨﺠﺎ ﺑﺮای اﻫﺪاف ﻣﺎ‪ .‬ﻫﺮ‬

‫‪API:‬‬

‫‪ HTTP‬آﯾﺎ ﺑﺪون ﺗﺎﺑﻌﯿﺖ ﻣﺎﻧﻨﺪ •‬


‫)‪.‬ﺣﺬف‪ ,‬و ﻏﯿﺮه ‪ (GET, POST, PUT,‬اﻓﻌﺎل ‪ HTTP‬ﭘﺸﺘﯿﺒﺎﻧﯽ از راﯾﺞ •‬
‫ﻓﺮﻣﺖ ‪ XML‬ﯾﺎ ‪ JSON‬ﺑﺎزﮔﺮداﻧﺪن اﻃﻼﻋﺎت در ﻫﺮ دو ﺻﻮرت •‬

‫ﺑﺎﯾﺪ ﺣﺪاﻗﻞ اﯾﻦ ﺳﻪ اﺻﻞ‪ .‬اﺳﺘﺎﻧﺪارد اﺳﺖ ‪ RESTful API‬ﻫﺮ‬


‫‪ web APIs.‬ﻣﻬﻢ اﺳﺖ زﯾﺮا آن را ﻓﺮاﻫﻢ ﻣﯽ ﮐﻨﺪ ﯾﮏ راه ﺳﺎزﮔﺎر ﺑﺮای ﻫﺮ دو ﻃﺮاﺣﯽ و ﻣﺼﺮف‬

‫ﻧﺘﻴﺠﻪ ﮔﻴﺮی‬

‫ﺑﺴﯿﺎری از ﻓﻦ آوری زﻣﯿﻨﻪ ای ﻣﺪرن ﺟﻬﺎن ﮔﺴﺘﺮده وب ﻣﺎ ﺑﻪ ﻋﻨﻮان در ﺣﺎﻟﯽ ﮐﻪ وﺟﻮد دارد‬

‫ﺗﻮﺳﻌﻪ دﻫﻨﺪﮔﺎن ﻻزم ﻧﯿﺴﺖ ﮐﻪ ﺑﺮای اﺟﺮای آن ﻫﻤﻪ از اﺑﺘﺪا‪ .‬زﯾﺒﺎ ﺗﺮﮐﯿﺒﯽ‬
‫ﭼﺎرﭼﻮب دﺳﺘﮕﯿﺮه ﺑﻪ درﺳﺘﯽ ﺑﺴﯿﺎری از ﭘﯿﭽﯿﺪﮔﯽ ‪ Django REST‬از ﺟﻨﮕﻮ و‬

‫اﻣﺎ اﯾﻦ ﻣﻬﻢ اﺳﺖ ﮐﻪ ﺣﺪاﻗﻞ ﯾﮏ درک ﮔﺴﺘﺮده ای ‪ web Api.‬ﻫﺎی درﮔﯿﺮ ﺑﺎ‬
‫‪.‬از ﭼﮕﻮﻧﻪ ﻫﻤﻪ ﻗﻄﻌﺎت ﻣﺘﻨﺎﺳﺐ ﺑﺎ ﻫﻢ‬

‫ﻣﺠﻤﻮﻋﻪ ای از ﻧﻘﻄﻪ اﻧﺘﻬﺎﯾﯽ ﮐﻪ اﻓﺸﺎی ﺑﺨﺶ ﻫﺎی ﺧﺎﺻﯽ از ﯾﮏ ‪ web API‬در ﻧﻬﺎﯾﺖ ﯾﮏ‬

‫ﺑﺮای ﻫﺮ ﭘﺎﯾﺎﻧﯽ ﭼﻪ ‪ Url‬زﻣﯿﻨﻪ ﭘﺎﯾﮕﺎه داده‪ .‬ﺑﻪ ﻋﻨﻮان ﺗﻮﺳﻌﻪ دﻫﻨﺪﮔﺎن ﻣﺎ ﮐﻨﺘﺮل‬

You might also like