JavaRush /Java блогы /Random-KK /REST туралы шолу. 2-бөлім: Клиент пен сервер арасындағы б...

REST туралы шолу. 2-бөлім: Клиент пен сервер арасындағы байланыс

Топта жарияланған
1-бөлім: REST дегеніміз не Бұл бөлімде клиент пен server арасындағы байланыстың қалай болатынын егжей-тегжейлі қарастырамыз. Жолда біз жаңа терминдерді ашып, оларға түсініктеме береміз. REST туралы шолу.  2-бөлім: клиент пен server арасындағы байланыс - 1Барлығы түсінікті болу үшін біз RESTful қолданбасының мысалын пайдаланып клиент-server байланысын талдаймыз. Біз тұтынушылар мен олардың тапсырыстары туралы ақпаратты сақтауға қабілетті веб-қосымшаны жасап жатырмыз делік. Анау. біздің жүйе кейбір нысандарды басқаруға қабілетті: оларды құру, өңдеу, жою және олар туралы ақпарат беру. Бұл субъектілер:
  • клиенттер – клиенттер;
  • тапсырыстар – тапсырыс берушінің тапсырыстары;
  • заттар - тауарлар.
REST архитектурасында клиенттер деректерді алу немесе өзгерту үшін serverге сұраулар жібереді, ал serverлер клиенттерге олардың сұрауларына жауаптар жібереді.

Сұраулар

Клиент сұраулары әрқашан дерлік HTTP арқылы жасалады. Жалпы, HTTP сұраулары бірнеше құрамдастардан тұрады:
  • HTTP әдісі;
  • тақырып;
  • URI;
  • сұрау органы.
Төменде біз әрбір құрамдас бөлікті толығырақ қарастырамыз.

URI және ресурстар

Клиенттер сұраулар арқылы алатын немесе өзгертетін деректер ресурстар деп аталады. Клиент пен server әрекетінің негізі ресурстармен манипуляциялау болып табылады. REST ішіндегі ресурстар - бұл атау беруге болатын кез келген нәрсе. Бір мағынада бұл Java тіліндегі сыныптар сияқты. Java тілінде біз кез келген нәрсе үшін класс жасай аламыз. REST-те де солай - ресурс кез келген нәрсе болуы мүмкін: пайдаланушы, құжат, есеп, тапсырыс. Мұның бәрі қандай да бір нысанның абстракциясы немесе нақты нәрсе болуы мүмкін, мысалы, файл - сурет, бейне, анимация, PDF файлы. Мысалы, бізде 3 ресурс бар:
  • клиенттер – клиенттер;
  • тапсырыстар – тапсырыс берушінің тапсырыстары;
  • заттар - тауарлар.
Клиенттер сұрауларды соңғы нүктелерге немесе соңғы нүктелерге жібереді. Қарапайым тілмен айтқанда, соңғы нүкте желідегі мекенжай сияқты. Тереңірек өту үшін соңғы нүкте URI болып табылады : дерексіз немесе физикалық ресурсты анықтайтын таңбалар тізбегі. Бірыңғай ресурс идентификаторы – біртұтас ресурс идентификаторы. Кейде соңғы нүкте немесе URI жол деп аталады - ресурсқа жол. Осы мақаланың мақсаттары үшін URI терминін қолданамыз. Әрбір нақты ресурста бірегей URI болуы керек. Әрбір ресурста әрқашан өзінің URI болуын қамтамасыз ету жауапкершілігі server әзірлеушісінің мойнында. Біздің мысалда біз әзірлеушілерміз, сондықтан біз мұны өзіміз білетіндей жасаймыз. Реляциялық дерекқорда бастапқы кілтті белгілі бір сандық идентификаторға орнату әдеттегідей, REST-те әрбір ресурстың өз идентификаторы болады. REST ішіндегі ресурс идентификаторы осы ресурс туралы ақпарат сақталатын дерекқордағы жазбаның идентификаторына сәйкес келетіні жиі кездеседі. REST URI әдетте кейбір ресурсты сипаттайтын зат есімнің көпше түрінен басталады. Мысалы, клиенттер сөзінен. Содан кейін идентификатор қиғаш сызық арқылы көрсетіледі - нақты клиенттің идентификаторы. Мысалдар:
  • /клиенттер – барлық бар клиенттердің URI-і;
  • /clients/23 - нақты клиенттің URI, атап айтқанда ID=23 клиенті;
  • /клиенттер/4 - нақты клиенттің URI, атап айтқанда ID=4 клиент.
Бірақ бұл бәрі емес. Біз оған тапсырыстарды қосу арқылы URI кеңейте аламыз:
  • /клиенттер/4/тапсырыстар — №4 клиенттің барлық тапсырыстарының URI;
  • /клиенттер/1/тапсырыстар/12 - №1 клиенттің №12 бұйрығының URI.
Осы тізбекті жалғастырып, тауарларды қоссақ, мынаны аламыз:
  • /клиенттер/1/тапсырыстар/12/тармақтар — №1 клиент жасаған №12 тапсырыс бойынша барлық өнімдер тізімінің URI.
Кірістірілген деңгейлермен 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"
}

Сұраныстарды біріктіру

Сонымен, біз клиенттің сұрауы неден тұруы мүмкін екенін қарастырдық. Енді сипаттамалары бар сұрауларға бірнеше мысал келтірейік
Сұраныс Сипаттама

GET /clients/23
Accept : application/json, application/xml
json немесе xml пішіміндегі №23 клиент туралы ақпаратты алыңыз

POST /clients
{
  "name" : "Amigo",
  "email" : "amigo@jr.com",
  "phone" : "+7 (191) 746-43-23"
}
Келесі өрістері бар жаңа клиент жасаңыз:
Аты - Amigo
Электрондық поштасы - amigo@jr.com
Тел. — +7 (191) 746-43-23

PUT /clients/1
{
  "name" : "Ben",
  "email" : "bigben@jr.com",
  "phone" : "+380 (190) 346-42-13"
}
№1 клиентті келесідей өңдеңіз:
Аты-жөні - Бен
Электрондық поштасы - bigben@jr.com
Тел. — +380 (190) 346-42-13

DELETE /clients/12/orders/6
Жүйеден № 12 тұтынушыдан № 6 тапсырысты жою

Жауаптар

Сервердің жауаптары туралы бірнеше сөз айтайық. Жауап әдетте келесі бөліктерден тұрады:
  • жауап codeы;
  • тақырыптар;
  • жауап беретін орган.
Жалпы, жауап тақырыптары сұрау тақырыптарынан айтарлықтай ерекшеленбейді. Сонымен қатар, кейбір тақырыптар жауаптарда да, сұрауларда да қолданылады. Жауаптың денесімен де бәрі түсінікті деп ойлаймын. Дене көбінесе клиент сұраған ақпаратты қайтарады. Ақпаратты GET сұраулары үшін бірдей JSON пішімінде қайтаруға болады. Бірақ соңғы бөлім сәл қызықтырақ.

HTTP жауап codeтары

HTTP жауап codeтарын толығырақ қарастырайық. Міне, Википедиядан алынған дәйексөз: HTTP күй codeы HTTP протоколы арқылы сұрауларға server жауабының бірінші жолының бөлігі болып табылады. Бұл ондық үш цифры бар бүтін сан. Бірінші сан шарттың класын көрсетеді. Жауап codeынан кейін әдетте бос орынмен бөлінген ағылшын тіліндегі түсіндірме сөз тіркесі болады, ол адамға осы нақты жауаптың себебін түсіндіреді. Мысалдар:
  • 201 Құрылды;
  • 401 Рұқсатсыз;
  • 507 Жад жеткіліксіз.
Клиент жауап codeынан оның сұрауының нәтижелері туралы біледі және келесі әрекеттерді анықтайды. Жауап codeтары бірнеше топқа бөлінеді:
  • 1ХХ – ақпараттық;
  • 2ХХ - клиенттің сұранысын сәтті қабылдау және өңдеу жағдайлары туралы хабарлау;
  • 3XX - клиентке операцияны сәтті аяқтау үшін әдетте басқа URI пайдалана отырып, басқа сұрау салу қажет екендігі туралы хабарлау;
  • 4ХХ - клиент қатесі. Мысалы, қате құрастырылған сұрау немесе клиент жоқ ресурсты сұраған кезде орын алуы мүмкін белгілі 404 Табылмады;
  • 5ХХ - server қатесі. Сервердің қателігінен операция орындалмаса, клиентке қайтарылады.
Барлық codeтар туралы толығырақ мына жерден оқи аласыз . 1-бөлім: REST дегеніміз не 3-бөлім: Spring Boot бағдарламасында RESTful қызметін жасау
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION