Қисми 1: REST чист Дар ин бахш мо бодиққат дида мебароем, ки иртибот байни муштарӣ ва server чӣ гуна сурат мегирад. Дар роҳ мо истилоҳоти навро ошкор мекунем ва ба онҳо тавзеҳот медиҳем. Барои равшан шудани ҳама чиз, мо бо истифода аз мисоли баъзе замимаҳои RESTful муоширати муштарӣ ва serverро таҳлил хоҳем кард. Фарз мекунем, ки мо веб-барномаеро таҳия карда истодаем, ки қодир аст маълумот дар бораи муштариён ва фармоишҳои онҳоро нигоҳ дорад. Онхое. системаи мо қодир аст, ки баъзе an objectҳоро идора кунад: онҳоро эҷод кунад, таҳрир кунад, нест кунад ва дар бораи онҳо маълумот диҳад. Ин субъектҳо хоҳанд буд:
- мизоҷон - мизоҷон;
- фармоишҳо - фармоишҳои муштариён;
- ашё - мол.
Дархостҳо
Дархостҳои муштарӣ қариб ҳамеша тавассути HTTP анҷом дода мешаванд. Умуман, дархостҳои HTTP аз якчанд ҷузъҳо иборатанд:- усули HTTP;
- унвон;
- URI;
- мақомоти дархост.
URI ва захираҳо
Маълумоте, ки муштариён тавассути дархостҳо ба даст меоранд ё тағир медиҳанд, захираҳо номида мешаванд. Асоси ҳамкории муштарӣ ва server ин коркарди захираҳо мебошад. Манбаъҳо дар REST ҳама чизест, ки онҳоро номгузорӣ кардан мумкин аст. Ба маъное, инҳо ба синфҳо дар Java монанданд. Дар Java мо метавонем синфро барои ҳама чиз эҷод кунем. Дар REST ҳамин тавр аст - манба метавонад ҳама чиз бошад: корбар, ҳуҷҷат, гузориш, фармоиш. Ҳамаи ин метавонад ё абстраксияи ягон an object ё чизи мушаххас бошад, масалан, файл - расм, видео, аниматсия, файли PDF. Барои мисоли мо, мо 3 захира дорем:- мизоҷон - мизоҷон;
- фармоишҳо - фармоишҳои муштариён;
- ашё - мол.
- /муштарӣ - URI ҳамаи муштариёни мавҷуда;
- /clients/23 - URI муштарии мушаххас, яъне муштарӣ бо ID=23;
- /clients/4 - URI-и муштарии мушаххас, яъне муштарӣ бо ID=4.
- /клиентҳо/4/фармоишҳо — URI ҳамаи фармоишҳои муштарии № 4;
- /муштариён/1/фармоиш/12 - URI фармони №12 муштарии №1.
- /муштарӣ/1/фармоиш/12/маълумот — URI рӯйхати ҳама маҳсулот аз рӯи фармоиши № 12, ки муштарии № 1 таҳия кардааст.
Усули HTTP
Методи HTTP (Usto HTTP English) пайдарпайии ҳама гуна аломатҳо мебошад, ба истиснои идоракунӣ ва ҷудокунандаҳо, ки амалиёти асосиро дар захира нишон медиҳанд. Якчанд усулҳои маъмули HTTP мавҷуданд. Мо онҳоеро номбар мекунем, ки дар хидматҳои RESTful бештар истифода мешаванд:- GET - барои гирифтани маълумот дар бораи манбаи мушаххас (тавассути ID) ё маҷмӯи захираҳо истифода мешавад;
- POST - барои сохтани манбаи нав истифода мешавад;
- PUT - барои тағир додани захира истифода мешавад (тавассути ID);
- DELETE - барои нест кардани захира истифода мешавад (тавассути ID).
Сарлавҳаҳо
Дархостҳо ва инчунин ҷавобҳо дорои сарлавҳаҳои HTTP мебошанд. Онҳо маълумоти иловагӣ дар бораи дархост (ё ҷавоб) мефиристанд. Сарлавҳаҳо ҷуфтҳои калид-арзиш мебошанд. Шумо метавонед рӯйхати сарлавҳаҳои маъмултаринро дар саҳифаи Википедиа хонед . Бо REST, муштариён метавонанд аксар вақт сарлавҳаи Accept-ро дар дархости худ ба server фиристанд. Он бояд ба server хабар диҳад, ки муштарӣ дар кадом формат интизор аст, ки аз он посух гирад. Вариантҳои гуногуни формат дар рӯйхати ба ном навъи MIME пешниҳод карда мешаванд. MIME (Multippurpose Mail Internet Extensions) як мушаххасот барои рамзгузории иттилоот ва форматкунии паёмҳо мебошад, то онҳо тавассути Интернет фиристода шаванд. Ҳар як намуди MIME аз ду қисм иборат аст, ки бо аломати хат ҷудо карда шудаанд: намуд ва зернавъи. Намунаҳои намудҳои MIME барои намудҳои гуногуни файлҳо:- матн - матн/ҳамвор, матн/css, матн/html;
- тасвир - тасвир/png, тасвир/jpeg, тасвир/gif;
- аудио - аудио/wav, аудио/mpeg;
- видео - video/mp4, video/ogg;
- барнома - замима/json, замима/pdf, барнома/xml, барнома/octet-stream.
Accept:application/json
Ин сарлавҳа ба server мегӯяд, ки муштарӣ интизори гирифтани посух дар формати JSON аст.
Мақомоти дархост
Паёми аз ҷониби муштарӣ ба server фиристодашуда. Новобаста аз он ки дархост дорои маҷмӯа аст ё не, аз намуди дархости HTTP вобаста аст. Масалан, дархостҳои GET ва DELETE одатан ягон мақоми дархостро дар бар намегиранд. Аммо PUT ва POST метавонанд дар бар гиранд: он ҳама дар бораи ҳадафи функсионалии навъи дархост аст. Дар ниҳоят, барои гирифтани маълумот ва нест кардани он аз рӯи ID (ки дар URL интиқол дода мешавад) ба шумо лозим нест, ки маълумоти иловагӣ ба server фиристед. Аммо барои сохтани манбаи нав (дархости POST), шумо бояд ин захираро интиқол диҳед. Ҳамин чиз барои тағир додани захираи мавҷуда дахл дорад. Дар REST, форматҳои XML ё JSON аксар вақт барои интиқоли мақоми дархост истифода мешаванд. Формати маъмултарин JSON мебошад. Фарз мекунем, ки мо мехоҳем ба server дархост ирсол кунем ва дар он манбаи нав эҷод кунем. Агар дар хотир дошта бошед, ба унвони мисол мо барномаеро дида баромадем, ки фармоишҳои муштариёнро идора мекунад. Фарз мекунем, ки мо мехоҳем як муштарии нав эҷод кунем. Дар ҳолати мо, мо маълумоти зеринро дар бораи мизоҷон нигоҳ медорем: Номи почтаи электронӣ Рақами телефон Пас, матни чунин дархост метавонад JSON зерин бошад:{
"name" : "Amigo",
"email" : "amigo@jr.com",
"phone" : "+7 (191) 746-43-23"
}
Якҷоя кардани дархостҳо
Ҳамин тавр, мо дида баромадем, ки дархости муштарӣ аз чӣ иборат буда метавонад. Биёед ҳоло якчанд мисолҳои пурсишҳоро бо тавсиф медиҳемДархост | Тавсифи |
---|---|
|
Дар бораи муштарии № 23 дар формати json ё xml маълумот гиред |
|
Бо майдонҳои зерин муштарии нав эҷод кунед: Ном - Amigo Email - amigo@jr.com Тел. — +7 (191) 746-43-23 |
|
Мизоҷи №1-ро ба таври зерин таҳрир кунед: Ном - Бен Email - bigben@jr.com Тел. — +380 (190) 346-42-13 |
|
Фармоиши № 6 аз фармоишгари № 12 аз система хориҷ карда шавад |
Ҷавобҳо
Биёед дар бораи посухҳои server чанд сухан бигӯем. Ҷавоб одатан аз қисмҳои зерин иборат аст:- рамзи ҷавоб;
- сарлавҳаҳо;
- мақоми ҷавоб.
Рамзҳои ҷавоби HTTP
Биёед ба codeҳои ҷавоби HTTP бодиққат назар кунем. Ин аст иқтибос аз Википедиа: Рамзи ҳолати HTTP қисми хати аввали посухи server барои дархостҳо тавассути протоколи HTTP мебошад. Он адади бутун бо се адади даҳӣ мебошад. Рақами аввал синфи шартро нишон медиҳад. Пас аз рамзи ҷавоб одатан ибораи тавзеҳотӣ дар забони англисӣ бо фосила ҷудо карда мешавад, ки ба шахс сабаби ин посухи мушаххасро мефаҳмонад. Мисолҳо:- 201 сохта шудааст;
- 401 Беиҷозат;
- 507 Захираи нокифоя.
- 1ХХ - иттилоотӣ;
- 2ХХ - дар бораи ҳолатҳои бомуваффақият қабул ва коркарди дархости муштарӣ хабар медиҳад;
- 3XX - ба муштарӣ хабар диҳед, ки барои бомуваффақият анҷом додани амалиёт дархости дигар, одатан бо истифода аз URI-и дигар зарур аст;
- 4ХХ - хатои муштарӣ. Масалан, дархости нодуруст сохташуда ё рамзи маъруфи 404 "Наёфтанд", ки метавонад ҳангоми дархости муштарӣ манбаи мавҷуда рух диҳад;
- 5ХХ - хатои server. Агар амалиёт бо айби server ноком шавад, ба муштарӣ бармегардад.
GO TO FULL VERSION