JavaRush /Java блогу /Random-KY /RESTге сереп салуу. 2-бөлүк: Кардар менен сервердин ортос...

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

Группада жарыяланган
1-бөлүк: REST деген эмне Бул бөлүктө биз кардар менен serverдин ортосунда байланыш кандай болорун кененирээк карап чыгабыз. Жолдо жаңы терминдерди ачып, аларга түшүндүрмөлөрдү беребиз. RESTге сереп салуу.  2-бөлүк: кардар менен serverдин ортосундагы байланыш - 1Баары түшүнүктүү болушу үчүн, биз RESTful тиркемесинин мисалында кардар менен serverдин байланышын талдайбыз. Биз кардарлар жана алардын буйрутмалары тууралуу маалыматты сактоого жөндөмдүү веб тиркемесин иштеп жатабыз дейли. Ошол. биздин система кээ бир an objectтерди манипуляциялоого жөндөмдүү: аларды түзүү, түзөтүү, жок кылуу жана алар жөнүндө маалымат берүү. Бул субъекттер болот:
  • кардарлар - кардарлар;
  • заказдар - кардарлардын заказдары;
  • буюмдар - товарлар.
REST архитектурасында кардарлар маалыматтарды алуу же өзгөртүү үчүн serverге суроо-талаптарды жөнөтүшөт, ал эми serverлер кардарлардын суроо-талаптарына жоопторду жөнөтүшөт.

Суранычтар

Кардардын сурамдары дээрлик дайыма HTTP аркылуу жасалат. Жалпысынан, HTTP сурамдары бир нече компоненттерден турат:
  • HTTP ыкмасы;
  • аталышы;
  • URI;
  • суроо орган.
Төмөндө биз ар бир компонентти кененирээк карап чыгабыз.

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

Кардарлар сурамдар аркылуу алган же өзгөрткөн маалыматтар ресурстар деп аталат. Кардар менен serverдин өз ара аракеттенүүсүнүн негизи ресурстарды манипуляциялоо болуп саналат. RESTдеги ресурстар - бул ат бериле турган бардык нерсе. Бул кандайдыр бир мааниде Javaдагы класстарга окшош. Javaда биз каалаган нерсе үчүн класс түзө алабыз. RESTте да ушундай - ресурс каалаган нерсе болушу мүмкүн: колдонуучу, document, отчет, буйрук. Мунун баары кандайдыр бир an objectтин абстракциясы же конкреттүү нерсе болушу мүмкүн, мисалы, файл - сүрөт, видео, анимация, PDF файл. Биздин мисал үчүн бизде 3 ресурс бар:
  • кардарлар - кардарлар;
  • заказдар - кардарлардын заказдары;
  • буюмдар - товарлар.
Кардарлар сурамдарды акыркы чекиттерге же акыркы чекиттерге жөнөтүшөт. Жөнөкөй сөз менен айтканда, акыркы чекит - бул тармактагы дарек сыяктуу. Тереңирээк баруу үчүн, акыркы чекит - бул URI : абстракттуу же физикалык ресурсту аныктаган символдордун ырааттуулугу. Uniform Resource Identifier - бирдиктүү ресурс идентификатору. Кээде акыркы чекит же URI жол деп аталат - бул ресурстун жолу. Бул макаланын максаттары үчүн биз URI терминин колдонобуз. Ар бир конкреттүү ресурста уникалдуу URI болушу керек. Ар бир ресурста ар дайым өзүнүн URI болушу үчүн жоопкерчorк serverди иштеп чыгуучунун мойнунда. Биздин мисалда биз иштеп чыгуучуларбыз, ошондуктан биз муну кантип билебиз. Реляциялык маалымат базасында негизги ачкычты белгилүү бир сандык идентификаторго коюу адаттагыдай эле, RESTте ар бир ресурстун өзүнүн ID бар. Көп учурда REST ичиндеги ресурстун идентификатору бул ресурс жөнүндө маалымат сакталган маалымат базасындагы жазуунун идентификаторуна дал келет. REST URI адатта кандайдыр бир ресурсту сүрөттөгөн зат атоочтун көптүк түрү менен башталат. Мисалы, кардарлар деген сөздөн. Андан кийин, ID слэш аркылуу көрсөтүлөт - белгилүү бир кардардын идентификатору. Мисалдар:
  • /кардарлар - бардык учурдагы кардарлардын URI;
  • /кардарлар/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 Method) – бул ресурстагы негизги операцияны көрсөткөн башкаруу элементтеринен жана бөлгүчтөрдөн башка бардык символдордун ырааттуулугу. Бир нече жалпы HTTP ыкмалары бар. Биз RESTful кызматтарында эң көп колдонулгандарды тизмектейбиз:
  • GET - белгилүү бир ресурс (ID аркылуу) же ресурстардын жыйнагы жөнүндө маалымат алуу үчүн колдонулат;
  • POST - жаңы ресурсту түзүү үчүн колдонулат;
  • PUT - ресурсту өзгөртүү үчүн колдонулат (ID аркылуу);
  • DELETE - ресурсту жок кылуу үчүн колдонулат (ID аркылуу).

рубрикалар

Сурамдар, ошондой эле жооптор HTTP аталыштарын камтыйт. Алар суроо-талап (же жооп) жөнүндө кошумча маалымат жөнөтүшөт. Башкылар ачкыч-маани жуптары. Сиз Wikipedia баракчасынан эң кеңири таралган рубрикалардын тизмесин окуй аласыз . REST менен кардарлар көбүнчө serverге өздөрүнүн суроо-талабында Кабыл алуу башын жөнөтө алышат. Бул serverге кардар андан кандай форматта жооп күтөрүн бorши керек. Ар кандай формат параметрлери MIME түрү деп аталган тизмеде берилген. MIME (көп максаттуу Интернет почта кеңейтүүлөрү) маалыматты codeдоо жана билдирүүлөрдү Интернет аркылуу жөнөтүү үчүн форматтоо үчүн спецификация. Ар бир MIME түрү сызык менен бөлүнгөн эки бөлүктөн турат: тип жана субтип. Ар кандай типтеги файлдар үчүн MIME типтеринин мисалдары:
  • текст - текст/жөнөкөй, текст/css, текст/html;
  • сүрөт - сүрөт/png, сүрөт/jpeg, сүрөт/gif;
  • аудио - аудио/wav, аудио/mpeg;
  • видео - video/mp4, video/ogg;
  • колдонмо - колдонмо/json, колдонмо/pdf, колдонмо/xml, колдонмо/октет-агым.
Жалпысынан сурамдын төмөнкү аталышы болушу мүмкүн:
Accept:application/json
Бул аталыш serverге кардар JSON форматында жооп алууну күтөрүн билдирет.

Сурам органы

Кардар serverге жөнөткөн билдирүү. Сурамдын денеси барбы же жокпу HTTP сурамынын түрүнөн көз каранды. Мисалы, GET жана DELETE суроо-талаптары, адатта, эч кандай суроо-талапты камтыbyte. Бирок PUT жана POST камтышы мүмкүн: бул сурам түрүнүн функционалдык максаты жөнүндө. Анткени, маалыматтарды алуу жана аны id (URL дарегинде берилет) боюнча жок кылуу үчүн serverге кошумча маалыматтарды жөнөтүүнүн кереги жок. Бирок жаңы ресурсту (POST суроо-талабын) түзүү үчүн бул ресурсту өткөрүп беришиңиз керек. Ошол эле учурдагы ресурсту өзгөртүүгө да тиешелүү. RESTте XML же JSON форматтары көбүнчө сурамдын негизги бөлүгүн өткөрүү үчүн колдонулат. Эң кеңири таралган формат JSON. Биз serverге суроо-талап жөнөткүбүз келет дейли жана анда жаңы ресурс түзөбүз. Эсиңизде болсо, мисал катары биз кардарлардын заказдарын башкарган тиркемени карадык. Келгиле, биз жаңы кардар түзгүбүз келет дейли. Биздин учурда, биз кардарлар жөнүндө төмөнкү маалыматты сактайбыз: Аты-жөнү Электрондук почта Телефон номери Анда мындай суроо-талаптын негизги бөлүгү төмөнкү JSON болушу мүмкүн:
{
  "name" : "Amigo",
  "email" : "amigo@jr.com",
  "phone" : "+7 (191) 746-43-23"
}

Сурамдарды бириктирүү

Ошентип, биз кардардын суроо-талабы эмнеден турушу мүмкүн экенин карап чыктык. Келгиле, азыр сыпаттамасы менен сурамдардын кээ бир мисалдарын берели
Сураныч Description

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
Email - amigo@jr.com
Тел. — +7 (191) 746-43-23

PUT /clients/1
{
  "name" : "Ben",
  "email" : "bigben@jr.com",
  "phone" : "+380 (190) 346-42-13"
}
№1 кардарды төмөнкүдөй түзөтүңүз:
Аты-жөнү - Ben
Email - bigben@jr.com
Тел. — +380 (190) 346-42-13

DELETE /clients/12/orders/6
Системадан №12 кардардын №6 буйругун өчүрүү

Жооптор

Сервердин жооптору жөнүндө бир нече сөз айталы. Жооп адатта төмөнкү бөлүктөрдөн турат:
  • жооп codeу;
  • баштар;
  • жооп орган.
Жалпысынан, жооп баштары суроо-талаптын аталыштарынан анча деле айырмаланbyte. Мындан тышкары, кээ бир аталыштар жооптордо да, суроо-талаптарда да колдонулат. Мен баары жооп денеси менен да түшүнүктүү деп ойлойм. орган көбүнчө кардар сураган маалыматты кайтарып берет. Маалымат GET сурамдары үчүн ошол эле JSON форматында кайтарылышы мүмкүн. Бирок акыркы бөлүгү бир аз кызыктуураак.

HTTP жооп codeдору

Келгиле, HTTP жооп codeдорун кененирээк карап чыгалы. Бул жерде Википедиядан цитата келтирилген: HTTP статус codeу HTTP протоколу аркылуу суроо-талаптарга serverдин жооп берүүсүнүн биринчи сабынын бир бөлүгү. Бул үч ондук сандан турган бүтүн сан. Биринчи цифра шарттын классын көрсөтөт. Жооптун codeу, адатта, англис тorнде боштук менен бөлүнгөн түшүндүрмө сөз айкашы менен коштолот, ал адамга ушул өзгөчө жооптун себебин түшүндүрөт. Мисалдар:
  • 201 Created;
  • 401 Уруксатсыз;
  • 507 Сактагыч жетишсиз.
Кардар суроо-талаптын натыйжалары жөнүндө жооп codeунан бorп алат жана андан ары кандай аракеттерди жасоо керектигин аныктайт. Жооп codeдору бир нече топко бөлүнөт:
  • 1ХХ - маалыматтык;
  • 2ХХ - кардардын суроо-талабын ийгorктүү кабыл алуу жана иштеп чыгуу учурлары жөнүндө маалымдайт;
  • 3XX - кардарга операцияны ийгorктүү аяктоо үчүн, адатта, башка URIди колдонуу менен, дагы бир суроо-талапты берүү зарыл экендигин билдирүү;
  • 4ХХ - кардар катасы. Мисалы, туура эмес түзүлгөн суроо же белгилүү 404 Табылган code, кардар жок ресурсту сураганда пайда болушу мүмкүн;
  • 5ХХ - server катасы. Эгерде операция serverдин күнөөсү боюнча ишке ашпай калса, кардарга кайтарылат.
Сиз бул жерде бардык codeдору жөнүндө көбүрөөк окуй аласыз . 1-бөлүк: REST деген эмне 3-бөлүк: Жазгы жүктөөдө RESTful кызматын түзүү
Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION