1-бөлім: REST дегеніміз не Бұл бөлімде клиент пен server арасындағы байланыстың қалай болатынын егжей-тегжейлі қарастырамыз. Жолда біз жаңа терминдерді ашып, оларға түсініктеме береміз. Барлығы түсінікті болу үшін біз RESTful қолданбасының мысалын пайдаланып клиент-server байланысын талдаймыз. Біз тұтынушылар мен олардың тапсырыстары туралы ақпаратты сақтауға қабілетті веб-қосымшаны жасап жатырмыз делік. Анау. біздің жүйе кейбір нысандарды басқаруға қабілетті: оларды құру, өңдеу, жою және олар туралы ақпарат беру. Бұл субъектілер:
- клиенттер – клиенттер;
- тапсырыстар – тапсырыс берушінің тапсырыстары;
- заттар - тауарлар.
Сұраулар
Клиент сұраулары әрқашан дерлік HTTP арқылы жасалады. Жалпы, HTTP сұраулары бірнеше құрамдастардан тұрады:- HTTP әдісі;
- тақырып;
- URI;
- сұрау органы.
URI және ресурстар
Клиенттер сұраулар арқылы алатын немесе өзгертетін деректер ресурстар деп аталады. Клиент пен server әрекетінің негізі ресурстармен манипуляциялау болып табылады. REST ішіндегі ресурстар - бұл атау беруге болатын кез келген нәрсе. Бір мағынада бұл Java тіліндегі сыныптар сияқты. Java тілінде біз кез келген нәрсе үшін класс жасай аламыз. REST-те де солай - ресурс кез келген нәрсе болуы мүмкін: пайдаланушы, құжат, есеп, тапсырыс. Мұның бәрі қандай да бір нысанның абстракциясы немесе нақты нәрсе болуы мүмкін, мысалы, файл - сурет, бейне, анимация, PDF файлы. Мысалы, бізде 3 ресурс бар:- клиенттер – клиенттер;
- тапсырыстар – тапсырыс берушінің тапсырыстары;
- заттар - тауарлар.
- /клиенттер – барлық бар клиенттердің URI-і;
- /clients/23 - нақты клиенттің URI, атап айтқанда ID=23 клиенті;
- /клиенттер/4 - нақты клиенттің URI, атап айтқанда ID=4 клиент.
- /клиенттер/4/тапсырыстар — №4 клиенттің барлық тапсырыстарының URI;
- /клиенттер/1/тапсырыстар/12 - №1 клиенттің №12 бұйрығының URI.
- /клиенттер/1/тапсырыстар/12/тармақтар — №1 клиент жасаған №12 тапсырыс бойынша барлық өнімдер тізімінің URI.
HTTP әдісі
HTTP әдісі (ағылшынша HTTP әдісі) - ресурстағы негізгі әрекетті көрсететін басқару элементтері мен бөлгіштерден басқа кез келген таңбалар тізбегі. Бірнеше жалпы HTTP әдістері бар. Біз RESTful қызметтерінде жиі қолданылатындарды тізімдейміз:- GET – белгілі бір ресурс (ID арқылы) немесе ресурстар жинағы туралы ақпаратты алу үшін қолданылады;
- POST – жаңа ресурс құру үшін қолданылады;
- PUT – ресурсты өзгерту үшін қолданылады (ID арқылы);
- DELETE – ресурсты жою үшін қолданылады (ID арқылы).
Тақырыптар
Сұраулар, сондай-ақ жауаптар HTTP тақырыптарын қамтиды. Олар сұрау (немесе жауап) туралы қосымша ақпаратты жібереді. Тақырыптар - кілт-мән жұптары. Сіз Википедия бетіндегі ең көп тараған тақырыптардың тізімін оқи аласыз . REST көмегімен клиенттер serverге сұрауында Accept тақырыбын жиі жібере алады. Бұл serverге клиенттің одан қандай форматта жауап күтетінін білу үшін қажет. MIME типтері деп аталатын тізімде әртүрлі пішім опциялары ұсынылған. MIME (Multipurpose Internet Mail Extensions) ақпаратты codeтауға және хабарламаларды Интернет арқылы жіберуге болатындай пішімдеуге арналған спецификация. Әрбір MIME түрі қиғаш сызықпен бөлінген екі бөліктен тұрады: түрі және ішкі түрі. Әр түрлі файлдар үшін MIME түрлерінің мысалдары:- мәтін – мәтін/жазық, мәтін/css, мәтін/html;
- image - image/png, image/jpeg, image/gif;
- аудио - аудио/wav, аудио/mpeg;
- бейне - бейне/mp4, бейне/ogg;
- қолданба - application/json, application/pdf, application/xml, application/octet-stream.
Accept:application/json
Бұл тақырып serverге клиент JSON пішімінде жауап алуды күтетінін хабарлайды.
Сұраныс органы
Клиенттің serverге жіберген хабарламасы. Сұрауда негізгі мәтін бар ма, жоқ па HTTP сұрауының түріне байланысты. Мысалы, GET және DELETE сұрауларында әдетте ешқандай сұрау мәтіні болмайды. Бірақ PUT және POST мыналарды қамтуы мүмкін: бұл сұрау түрінің функционалдық мақсаты туралы. Өйткені, деректерді алу және оны идентификатор бойынша жою үшін (ол URL мекенжайында жіберіледі) serverге қосымша деректерді жіберудің қажеті жоқ. Бірақ жаңа ресурс жасау үшін (POST сұрауы) осы ресурсты тасымалдау керек. Бұл бар ресурсты өзгертуге де қатысты. REST ішінде XML немесе JSON пішімдері сұраудың негізгі бөлігін жіберу үшін жиі пайдаланылады. Ең көп таралған пішім JSON. Біз serverге сұрау жібергіміз келеді делік және онда жаңа ресурс жасадық. Естеріңізде болса, мысал ретінде біз тұтынушы тапсырыстарын басқаратын қолданбаны қарадық. Біз жаңа клиент жасағымыз келеді делік. Біздің жағдайда біз клиенттер туралы келесі ақпаратты сақтаймыз: Аты Электрондық пошта Телефон нөмірі Содан кейін мұндай сұраудың негізгі бөлігі келесі JSON болуы мүмкін:{
"name" : "Amigo",
"email" : "amigo@jr.com",
"phone" : "+7 (191) 746-43-23"
}
Сұраныстарды біріктіру
Сонымен, біз клиенттің сұрауы неден тұруы мүмкін екенін қарастырдық. Енді сипаттамалары бар сұрауларға бірнеше мысал келтірейікСұраныс | Сипаттама |
---|---|
|
json немесе xml пішіміндегі №23 клиент туралы ақпаратты алыңыз |
|
Келесі өрістері бар жаңа клиент жасаңыз: Аты - Amigo Электрондық поштасы - amigo@jr.com Тел. — +7 (191) 746-43-23 |
|
№1 клиентті келесідей өңдеңіз: Аты-жөні - Бен Электрондық поштасы - bigben@jr.com Тел. — +380 (190) 346-42-13 |
|
Жүйеден № 12 тұтынушыдан № 6 тапсырысты жою |
Жауаптар
Сервердің жауаптары туралы бірнеше сөз айтайық. Жауап әдетте келесі бөліктерден тұрады:- жауап codeы;
- тақырыптар;
- жауап беретін орган.
HTTP жауап codeтары
HTTP жауап codeтарын толығырақ қарастырайық. Міне, Википедиядан алынған дәйексөз: HTTP күй codeы HTTP протоколы арқылы сұрауларға server жауабының бірінші жолының бөлігі болып табылады. Бұл ондық үш цифры бар бүтін сан. Бірінші сан шарттың класын көрсетеді. Жауап codeынан кейін әдетте бос орынмен бөлінген ағылшын тіліндегі түсіндірме сөз тіркесі болады, ол адамға осы нақты жауаптың себебін түсіндіреді. Мысалдар:- 201 Құрылды;
- 401 Рұқсатсыз;
- 507 Жад жеткіліксіз.
- 1ХХ – ақпараттық;
- 2ХХ - клиенттің сұранысын сәтті қабылдау және өңдеу жағдайлары туралы хабарлау;
- 3XX - клиентке операцияны сәтті аяқтау үшін әдетте басқа URI пайдалана отырып, басқа сұрау салу қажет екендігі туралы хабарлау;
- 4ХХ - клиент қатесі. Мысалы, қате құрастырылған сұрау немесе клиент жоқ ресурсты сұраған кезде орын алуы мүмкін белгілі 404 Табылмады;
- 5ХХ - server қатесі. Сервердің қателігінен операция орындалмаса, клиентке қайтарылады.
GO TO FULL VERSION