Оё шумо мехоҳед барномаи худро ба Facebook пайваст кунед, то он метавонад ба таври худкор паёмҳо тавлид кунад ё ба Instagram, то шумо метавонед аксҳоро бо хэштегҳои муайян такрор кунед?
Шумо инчунин метавонед видеоҳои YouTube-ро ба вебсайти худ дохил кунед. Интерфейси барномасозии барномаҳо ба шумо имкон медиҳад, ки ҳамаи ин вазифаҳо ва ғайраро (API) иҷро кунед.
Барномаҳои гуногун метавонанд ба шарофати APIҳо ба монанди Instagram API, Facebook API ва YouTube API ба таври бехатар ва стандартӣ бо ҳамдигар "сухан" кунанд.
Ба ибораи дигар, барнома метавонад хусусиятҳо ё маълумотро аз як қисми дигари нармафзор бигирад ва онҳоро барои беҳтар кардани хусусиятҳои худ ё таҷрибаи корбар истифода барад. Аммо чӣ гуна барномаҳо метавонанд ин дархостҳоро иҷро кунанд, коркард кунанд ва ба онҳо тавре посух диҳанд, ки дигарон фаҳманд?
Ин аз он вобаста аст, ки API чӣ гуна сохта шудааст. Ҳангоми муҳокимаи тарҳҳои API (интерфейси барномасозии барнома), одатан муқоиса кардани SOAP ва REST, ду парадигмаи барҷастатарини API мебошад.
Ҳамин ки API-ҳои SOAP (Протоколи дастрасии оддии объект) стандарти тиллоӣ барои ширкатҳо ба монанди Oracle, Sun ва PayPal шуданд, як сол ё баъдтар ба REST API-ҳои Google, Amazon ва eBay посухи баробар ва муқобил пайдо шуд.
Дар ин паём, мо API-ҳои SOAP-ро бо REST API-ҳо муқоиса ва муқоиса мекунем, то шумо тавонед, ки кадомаш барои ҳадафҳои шумо беҳтар аст.
Мо бо муайян кардани API оғоз мекунем.
API чист?
Интерфейси барномасозии барнома API номида мешавад. APIҳо аслан маҷмӯи усулҳо ва функсияҳо мебошанд, ки барои таҳияи барномаҳо имкон медиҳанд. Онҳо ба маълумот ва вазифаҳои барномаҳо, хидматҳо ё системаҳои оператсионӣ дастрасӣ пайдо мекунанд.
Онҳо ҳамчун як миёнарав байни системаҳои гуногуни нармафзор хидмат мекунанд. Онҳо имкон медиҳанд, ки байни ду барномаи пайвастнашуда "гуфтугу" кунанд.
Биёед мисоли брокереро гирем, ки дар савдо ва бозорҳои молиявӣ фаъолона иштирок мекунад. Маҷмӯаи автоматӣ алгоритмҳои савдо тавассути API ба платформаи брокери савдои дӯстдоштаи савдогар пайваст шудан мумкин аст. Ин ба шумо, тоҷир имкон медиҳад, ки муомилоти электрониро иҷро кунед ё нархномаҳо ва маълумоти нархгузориро дар вақти воқеӣ бубинед.
REST чист?
API-ҳои ҳақиқии "хизматрасониҳои веб" дорои REST (Интиқоли намояндагии давлатӣ) мебошанд. API-ҳои REST дар URI (Идентификаторҳои ягонаи захираҳо, ки URL як навъи махсус аст), протоколи HTTP ва формати додаҳои JSON ба браузери бениҳоят мувофиқ сохта шудаанд.
Протоколи SOAP, тавре ки мо аллакай гуфта будем, эҳтимолан низ истифода шавад. REST API-ро эҷод кардан ва афзоиш додан осон аст, аммо онҳо инчунин метавонанд азим ва душвор бошанд - ҳама аз он вобаста аст, ки онҳо чӣ гуна эҷод, васеъ ва чӣ кор кардан мехоҳанд.
Маҳдудиятҳои захираҳо, талаботҳои камшудаи амният, мутобиқати муштарии браузер, кашфшавандагӣ, солимии маълумот ва миқёспазирӣ баъзе сабабҳое мебошанд, ки шумо мехоҳед API-ро барои RESTful таҳия кунед - чизҳое, ки воқеан ба хидматҳои веб дахл доранд.
REST як варианти сабуктареро пешниҳод мекунад. Истифодаи SOAP барои бисёре аз таҳиягарон душвор буд ва гарон буд. Масалан, истифодаи SOAP бо JavaScript барои анҷом додани амалиёти оддӣ навиштани коди зиёдеро талаб мекунад, зеро ҳар дафъа сохтори зарурии XML бояд эҷод карда шавад.
REST (одатан) URL-и мустақимро ба ҷои дархости XML истифода мебарад. Гарчанде ки ҳолатҳои нодир вуҷуд доранд, ки шумо бояд тафсилоти бештар пешниҳод кунед, аксарияти хидматҳои веби RESTful танҳо техникаи URL-ро истифода мебаранд.
Чор феъли HTTP 1.1 GET, POST, PUT ва DELETE метавонанд тавассути REST барои анҷом додани амалиёт истифода шаванд. Баръакси SOAP, REST ба ҷавоб дар XML лозим нест.
Хидматҳои веб дар асоси REST, ки маълумотро дар форматҳои Command Separated Value (CSV), JavaScript Object Notation (JSON) ва Really Simple Syndication (RSS) мебароранд (RSS).
Ҳадаф ин аст, ки шумо метавонед натиҷаҳои лозимаро дар формати таҳлили осон дар дохили забоне, ки барои барномаатон истифода мебаред, ба даст оред.
Вижагиҳо
- REST ба туфайли протоколҳои HTTP соддаиро пеш аз ҳама таъкид мекунад.
- Веб барои REST беҳтарин мувофиқ аст. Он бо браузерҳо мувофиқ аст, зеро JSON ҳамчун формати додаҳо истифода мешавад.
- REST бо миқёспазирӣ ва суръати барҷастаи худ машҳур аст.
- Пайвастшавӣ ва меъмории мизоҷ-сервер тавассути REST API дастрастар карда мешавад. Агар он RESTful бошад, он бо истифода аз ин модели муштарӣ-сервер сохта мешавад, ки бо сафарҳои даврӣ байни ду тараф борҳои маълумотро мегузаранд.
- REST API интерфейси стандартии яккасаро истифода мебаранд. Кафолат додани он, ки ҳамаи барномаҳо яксон ва тавассути як дарвоза пайваст мешаванд, тарзи муоширати барномаҳоро бо API осон мекунад.
SOAP чист?
Протоколи худи он, ки SOAP (Simple Object Access Protocol) ном дорад, нисбат ба REST каме мураккабтар аст, зеро он стандартҳои бештар, аз ҷумла стандартҳои марбут ба амният ва интиқоли паёмҳоро муайян мекунад.
Ин меъёрҳои хос бо каме хароҷоти иловагӣ меоянд. Бо вуҷуди ин, онҳо метавонанд омили ҳалкунанда барои корхонаҳое бошанд, ки ба қобилиятҳои бештари амният, транзаксия ва ACID (Atomicity, Consistency, Consistency, Dayability) мувофиқат эҳтиёҷ доранд.
Ба хотири ин муқоиса, қайд кардан муҳим аст, ки бисёре аз бартариҳои SOAP аксар вақт ба барномаҳои хидматрасонии веб дахл надоранд, ки онҳоро барои сенарияҳои навъи корхона мувофиқтар мекунанд.
Дараҷаҳои баландтари амният (масалан, вақте ки a барнома мобилӣ бо бонк ҳамкорӣ мекунад), барномаҳои паёмнависӣ, ки иртиботи боэътимод, муошират бо системаҳои кӯҳна ё мутобиқати ACID-ро талаб мекунанд, чанд сабабест, ки шумо мехоҳед барномаеро бо истифода аз SOAP API тарҳрезӣ кунед.
Имкониятҳои паёмнависии аз ҷониби SOAP пешниҳодшуда комилан ба XML асос ёфтаанд. Технологияҳои кӯҳнаи ба интернет номувофиқ ба монанди Модели Объекти тақсимшудаи Ҷузъ (DCOM) ва Архитектураи Common Object Request Broker ҳангоми бори аввал аз ҷониби Microsoft (CORBA) сохта шуданаш бо SOAP иваз карда шуданд.
Таваҷҷӯҳ ба алоқаи дуӣ боиси нокомии ин системаҳо мегардад. Дар интернет, паёмнависии XML, ки аз ҷониби SOAP истифода мешавад, беҳтар кор мекунад.
Вижагиҳо
- Амнияти SOAP ба таври назаррас сахттар аст. WS-Security як стандарти дарунсохтест, ки ба SOAP имкониятҳои иловагии амниятиро дар сатҳи корхона пешниҳод мекунад, агар ба ғайр аз дастгирии SSL лозим бошад.
- Бомуваффақият/аз нав кӯшиш кунед, ки барои иҷрои эътимодбахши паёмнависӣ асоснок кунед. Азбаски REST механизми стандартишудаи паёмро надорад, он метавонад танҳо ҳангоми нокомии иртибот дубора кӯшиш кунад. Ҳатто ҳангоми истифодаи миёнаравҳои SOAP, SOAP аз сабаби мантиқи бомуваффақият/аз нав кӯшиши дарунсохташ эътимоднокии ниҳоиро пешниҳод мекунад.
- SOAP аллакай ба стандартҳои ACID мувофиқат мекунад. Бо диктатсия, ки чӣ гуна транзаксияҳо бо пойгоҳи додаҳо ҳамкорӣ карда метавонанд, мутобиқати ACID аномалияҳоро кам мекунад ва мутобиқати пойгоҳи додаҳоро муҳофизат мекунад. Азбаски ACID нисбат ба дигар моделҳои мутобиқати додаҳо боэҳтиёттар аст, он аксар вақт ҳангоми идоракунии амалиёти ҳассос, хоҳ молиявӣ ва чӣ дигар истифода мешавад.
- Барои барномасозон фаҳмидан осон аст, зеро SOAP як муоширати комилан ба XML асосёфта аст.
- Протоколи паёмнависии XML илова ба протоколи HTTP мебошад.
- Муоширатро аз як компютер ба компютери дигар тавассути паёмнависии SOAP паҳн кардан мумкин аст.
- Меъмории мизоҷ-сервер низ метавонад амалӣ карда шавад. Паёми протоколи SOAP метавонад аз ҷониби муштарӣ барои занг задан ба занги расмиёти дурдаст, ки дар тарафи сервер ҷойгир аст, истифода шавад.
Фарқиятҳои REST ва SOAP
1. Меъморӣ
API барои нишон додани ҷузъҳои мушаххаси мантиқи тиҷоратии барнома дар сервер пешбинӣ шудааст. Дар ҳоле ки REST URI-ро бо ҳамин мақсад истифода мебарад, SOAP барои ин интерфейси хидматро истифода мебарад.
API-ҳои REST пас аз маълумот сохта мешаванд, дар ҳоле ки API-ҳои SOAP пас аз функсияҳое, ки API нишон медиҳанд, таҳия карда мешаванд. Дар муқоиса бо SOAP, ки бештар ба функсия асос ёфтааст, REST тарҳи бештар ба маълумот асосёфта мебошад.
2. Кушодан
Маълумоте, ки ҳамчун кэшшаванда қайд карда шудааст, метавонанд аз ҷониби браузерҳо дубора истифода шаванд, бидуни талаб кардани дархости нав ба сервер. Сарфа кардани вақт ва кӯшиш манфиати ин аст.
Ҷавобҳо дар сатҳи HTTP кэш карда намешаванд, зеро дархостҳои SOAP тавассути дархостҳои POST, ки стандарти HTTP онҳоро ғайриидемпотент мешуморад, пешниҳод карда мешавад. Агар шумо хоҳед, ки кэшро истифода баред, шумо бояд то ҳол усулҳои заруриро созед, зеро REST API ин татбиқро дар бар намегирад.
3. Захираҳо ва фарохмаҷро
Аз сабаби интиқоли бори лифофа, ки аз ҷониби SOAP истифода мешавад, афзоиши мӯътадили хароҷот ба назар мерасад, ки фарохмаҷрои иловагиро талаб мекунад. Табиати сабуки REST дар ин ҳолатҳо фоида аст, зеро он одатан барои хидматҳои веб истифода мешавад.
4. Амният
Амнияти WS, ки SOAP онро дастгирӣ мекунад ва нисбат ба SSL дар сатҳи нақлиёт каме амиқтар аст, матлуб аст. Ворид намудани чораҳои амниятии сатҳи корхона бо он низ мувофиқи комил аст.
Рамзгузории охири ба охир бо истифода аз SSL ҳам аз ҷониби SOAP ва REST дастгирӣ мешавад ва REST метавонад HTTPS, варианти бехатари протоколи HTTP-ро истифода барад.
5. Коркарди сарборӣ
Маълумоте, ки тавассути Интернет интиқол дода мешавад, ҳамчун борбардорӣ номида мешавад. Боре, ки «вазнин» ҳисобида мешавад, ба захираҳои иловагӣ ниёз дорад. Дар муқоиса бо SOAP, ки XML-ро истифода мебарад, REST аксар вақт JSON ва HTTP-ро истифода мебарад, то ба кам кардани бори бор мусоидат кунад.
Китобхонаи махсуси муштарӣ бо рамзи тавлидшуда бояд маъмулан аз ҷониби муштарӣ барои дастрасӣ ба API-ҳои SOAP аз сабаби шартномаи иртиботии хеле сахти онҳо истифода шавад.
Дар натиҷа, SOAP нисбат ба REST сатҳи камтари абстраксияро пешниҳод мекунад ва бо сервер зичтар пайваст аст.
REST кай бояд истифода шавад?
- Эҷоди API-ҳои ҷамъиятӣ: API-ҳои REST барои сохтани хидматҳои веби ҷамъиятӣ бартарӣ доранд, зеро дида мешавад, ки истифода ва қабули онҳо нисбат ба SOAP API осонтар аст. Илова бар ин, SOAP якчанд чораҳои дохилии бехатариро пешниҳод мекунад, ки REST надоранд, гарчанде ки ин хусусиятҳо ҳангоми кор бо додаҳо ва хидматҳои кушода талаб карда намешаванд.
- Сохтани барномаҳои мобилӣ: REST барои сохтани замимаҳои мобилӣ комил аст, зеро он хурд, муассир, бидуни шаҳрвандӣ ва кэшшаванда аст.
- Истифодаи захираҳои сервери камёб ва фарохмаҷрои: Ҳама дархостҳо ба REST API бояд бидуни шаҳрвандӣ бошанд, ин маънои онро дорад, ки ҳар як муошират алоҳида аст ва ҳар як дархост ва ҷавоб дорои тамоми маълумоти зарурӣ барои анҷом додани ин ҳамкорӣ мебошад. Сервер сабтҳои дархостҳои қаблиро захира намекунад, зеро он ба ҳар як дархост ҳамчун дархости нав муносибат мекунад. Дар натиҷа, сервер хотираи хеле камтарро талаб мекунад ва тезтар кор мекунад, зеро дархост амали минбаъда ё ҷустуҷӯи маълумоти таърихиро талаб намекунад.
SOAP кай истифода мешавад?
- Эҷоди API-ҳои хусусӣ, махсусан барои тиҷорати калон: SOAP барои барномаҳои корпоративӣ комил аст, зеро он ҷараёни маълумотро дар муҳити ғайримарказонидашуда ва тақсимшуда имкон медиҳад ва дорои якчанд хусусиятҳои амнияти онлайн аст.
- Истифодаи протоколи интиқоли ғайр аз HTTP ҳамчун қабати асосӣ: SOAP аз HTTP ҳамчун қабати асосӣ вобаста нест. Вобаста аз дархости худ, шумо метавонед SMTP (Протоколи интиқоли почтаи оддӣ), JMS (Хадамоти паёмнависии Java) ё протоколи дигари интиқолро истифода баред.
- Кор бо амалиёти давлатӣ: Дар муқоиса бо дархостҳо ба API-ҳои REST, дархостҳо ба API-ҳои SOAP ҳолати ҳолати доранд, яъне сервер маълумотро дар бораи муштарӣ ҳифз мекунад ва онро дар як силсила дархостҳо ё амалиётҳо истифода мебарад. Ҳатто дар ҳоле, ки ин маҷрои бештари сервер ва захираҳоро истифода мебарад, он барои иҷрои амалҳои муқаррарӣ ё алоқаманд, ба монанди интиқоли бонк, муҳим аст.
хулоса
Муқоисаи байни REST ва SOAP API ба таври равшан нишон медиҳад, ки REST аз SOAP афзалтар аст. Ҳатто, ҳолатҳое ҳастанд, ки SOAP API талаб карда мешавад. Дар баъзе мавридҳо, хидматҳои веб тавассути омезиши REST ва SOAP API сохта мешаванд.
Аз ин рӯ, парвандаи истифода муайян мекунад, ки кадом услуби API беҳтар кор мекунад.
Дин ва мазҳаб