Будаўнічыя Вэб-сервісу шляху АДПАЧЫНАК


Original: http://www.xfront.com/REST-Web-Services.html

Роджэр Л. Кастэла

Я спачатку даць кароткае ўвядзенне ў REST , а затым апішам , як стварыць вэб -службаў у стылі REST .

 

Што такое REST ?
АДПАЧЫНАК з’яўляецца тэрмін Рой Філдынг ў сваёй доктарскай дысертацыяй , дысертацыя [ 1 ] для апісання архітэктуры стыль сеткавых сістэм . АДПАЧЫНАК з’яўляецца абрэвіятурай , стоячы на Representational State Transfer .

 

Чаму яна называецца перадачы рэпрэзентатыўнага стану ?
Вэб складаецца з рэсурсаў . Рэсурс з’яўляецца любы прадмет цікавасці . Напрыклад , Боінга Corp можа вызначыць рэсурс 747. Кліенты могуць атрымаць доступ да гэтага рэсурсу з гэтым URL:

http://www.boeing.com/aircraft/747

Ўяўленне рэсурсу вяртаецца (напрыклад , Boeing747.html ) . Ўяўленне ставіць кліенцкае прыкладанне ў стане. Вынікам кліента , які праходзіць гіперспасылкі ў Boeing747.html іншы рэсурс даступны . Новае ўяўленне ставіць кліенцкае прыкладанне ў яшчэ адну дзяржавы . Такім чынам , змены кліенцкага прыкладання ( трансферты ) стан з кожным прадстаўлення рэсурсу -> Representational State Transfer !

Вось тлумачэнне Роя Філдынга пра сэнс Representational State Transfer :

“ Representational State Transfer прызначана для выклікаць вобраз , як добра прадуманыя вэб -дадатак вядзе сябе : сетка вэб – старонак ( віртуальнае стан -машына ) , у якім карыстальнік прагрэсуе праз прыкладанне , выбраўшы спасылкі (дзяржаўныя пераходы ) , у выніку чаго наступная старонка ( якое прадстаўляе наступную стан прыкладання ) , якая перадаецца карыстачу і вынеслі за іх выкарыстанне „.
Матывацыя для адпачынку
Матывацыя для REST было захапіць характарыстыкі Web , які зрабіў вэб паспяховым. Пасля гэтыя характарыстыкі выкарыстоўваюцца для кіравання эвалюцыю ў Інтэрнэце.
АДПАЧЫНАК – архітэктурны стыль , не з’яўляецца стандартным
АДПАЧЫНАК не з’яўляецца стандартным. Вы не ўбачыце W3C тушэнні спецыфікацыю REST . Вы не ўбачыце IBM або Microsoft або Sun продажу інструментар распрацоўніка адпачыць у . Чаму ? Таму што астатняе проста архітэктурны стыль. Вы не можаце закаркаваць гэты стыль. Вы можаце толькі зразумець яго , і стварыць свой ​​вэб -службаў у гэтым стылі . ( Па аналогіі з кліент – сервернай архітэктурным стылі. Там няма стандартнага кліент -сервер. )

У той час як REST не з’яўляецца стандартным , гэта выкарыстоўваць стандарты:

HTTP
URL
XML / HTML / GIF / JPEG / і г.д. ( рэсурс прадстаўніцтва )
тэкст / XML , тэкст / HTML , малюнак / малюнак , малюнак / JPEG і г.д. ( MIME тыпы )

Сістэма Classic АДПАЧЫНАК
Інтэрнэт ўяўляе сабой сістэму АДПАЧЫНАК ! Многія з гэтых вэб -службаў , што вы былі з выкарыстаннем столькі гадоў – кніга – замове паслуг , пошук паслуг , онлайн слоўнік паслуг і г.д. – з’яўляюцца REST аснове вэб -службаў. Нажаль , вы былі з дапамогай REST , будаўнічыя паслугі REST і вы нават не ведаюць пра гэта.

АДПАЧЫНАК занепакоены з „вялікай карціне “ Сеткі . Гэта не тычыцца дэталяў рэалізацыі (напрыклад , выкарыстоўваючы сэрвлета або CGI для рэалізацыі вэб – службы) . Такім чынам, давайце зірнем на прыклад стварэння вэб -службы ад астатняй « агульную карціну » кропкі гледжання .
Часткі Depot Web Services
Часткі Depot , Inc ( выдуманая кампанія) разгарнула некалькі вэб – сэрвісаў для таго , каб сваім кліентам:

атрымаць спіс запчастак
атрымаць падрабязную інфармацыю аб той ці іншай часткі
прадставіць заказ на куплю ( PO)

Давайце разгледзім , як кожны з гэтых паслуг ажыццяўляюцца ў RESTful моды.
Атрымаць спіс запасных частак
Вэб – сэрвіс робіць даступным URL да рэсурсу спіс частак . Напрыклад , кліент будзе выкарыстоўваць гэты URL , каб атрымаць спіс дэталяў:

http://www.parts-depot.com/parts

Звярніце ўвагу , што „як“ вэб – сэрвіс генеруе спіс дэталяў з’яўляецца цалкам празрыстым для кліента. Усе кліент ведае , што калі ён / яна ўяўляе вышэй URL , то дакумент , які змяшчае спіс запчастак вяртаецца . Паколькі рэалізацыя з’яўляецца празрыстым для кліентаў , Запчасткі Depot вольны змяніць ўнутраную рэалізацыю гэтага рэсурсу без шкоды для кліентаў. Гэта слабая сувязь.

Вось дакумент , які атрымлівае кліент :

< ? XML версія = “ 1.0 “ ? >
< Р : Запчасткі Аптовы гандаль: P = “ http://www.parts-depot.com “ аптовая гандаль: XLink = “ http://www.w3.org/1999/xlink „>
< / Р : запасныя часткі>

[ Выкажам здагадку , што шляхам перамоваў змесціва служба ўстанавіла , што кліент хоча , каб прадстаўленне ў выглядзе XML ( для апрацоўкі машына -машына ) . ] Заўважым , што спіс дэталяў мае спасылкі , каб атрымаць падрабязную інфармацыю аб кожнай часткі. Гэта ключавы асаблівасцю REST . Кліенцкія пераклады з аднаго стану да іншага , даследуючы і выбраўшы з ліку альтэрнатыўных адрасоў ў атветным дакуменце.
Атрымаеце падрабязную частцы дадзеных
Вэб – сэрвіс робіць даступным URL для кожнай часткі рэсурсу. Прыклад , вось як кліент запытвае ўдзел 00345 :

http://www.parts-depot.com/parts/00345

Вось дакумент , які атрымлівае кліент :

< ? XML версія = “ 1.0 “ ? >
< Р : Аптовы гандаль Частка : р = “ http://www.parts-depot.com “ аптовая гандаль: XLink = “ http://www.w3.org/1999/xlink „>
00345 < / Частка- ID >
Віджэт – < / Name >
Гэтая частка выкарыстоўваецца ў FRAP зборкі < / Апісанне >

0.10 < / UnitCost >
10 < / Колькасць >
< / Р : Частка >

Зноў назіраць , як гэтыя дадзеныя звязаны з яшчэ больш дадзеных – спецыфікацыя для гэтай часткі можна знайсці шляхам абыходу гіперспасылку . Кожны дакумент адказу дазваляе кліенту , каб разгарнуць яго , каб атрымаць больш падрабязную інфармацыю.
Уявіце РА
Вэб – сэрвіс робіць даступным URL прадставіць PO . Кліент стварае асобнік ПА дакумент , які адпавядае да PO схемы , Запчасткі Depot распрацаваў ( і агалоску ў WSDL дакумента) . Кліент ўяўляе po.xml як карысную нагрузку на HTTP POST .

PO – служба адказвае на HTTP POST з URL у прадстаўленым ПА. Такім чынам , кліент можа атрымаць РА ў любы час пасля гэтага ( для абнаўлення / рэдагаваць яго ) . PO стала частка інфармацыі якая падзелена паміж кліентам і серверам. Агульная інфармацыя ( PO) даецца адрас ( URL ) на сэрвэры і прадастаўляецца ў выглядзе вэб -службы.
Лагічныя URL – адрасы па параўнанні з фізічных адрасоў
Рэсурс ўяўляе сабой канцэптуальную сутнасць. Ўяўленне з’яўляецца канкрэтным праявай рэсурсу. Гэты URL:

http://www.parts-depot.com/parts/00345

з’яўляецца лагічным URL , не фізічны URL. Такім чынам , не трэба быць , напрыклад , статычны HTML старонкі для кожнай часткі. На самай справе , калі б у мільён частак , то мільён статычныя HTML старонкі не былі б вельмі прывабны дызайн.

[ Падрабязна Рэалізацыя : Запчасткі Дэпо можа рэалізаваць службу , якая атрымлівае падрабязныя дадзеныя аб канкрэтным часткова выкарыстоўваючы Java Servlet , які аналізуе радок пасля імя хаста , які выкарыстоўвае нумар дэталі запытваць базу дадзеных частак , сфармуляваць вынікі запыту ў выглядзе XML , і затым вярнуць XML у якасці карыснай нагрузкі адказу HTTP. ]

У самым адрасоў тыпу не павінны раскрыць методыку , якую выкарыстоўвае рэалізацыі . Вы павінны быць вольныя , каб змяніць сваю рэалізацыю , не ўплываючы на кліентаў або якія маюць якія ўводзяць у зман URL.
REST Web Services характарыстыкі
Вось характарыстыкі REST :

Кліент- Сервер : высоўны аснове стылю ўзаемадзеяння : спажываючы кампаненты цягнуць прадстаўлення .
Асобы без грамадзянства : кожны запыт ад кліента да сервера павінен утрымліваць усю інфармацыю , неабходную для разумення запыту , і не можа скарыстацца любы захоўваемай кантэксце на серверы.
Кэш: каб палепшыць адказаў эфектыўнасць сеткі павінны быць здольныя быць пазначаныя як кэшируемые або некэшируемые .
Адзіны інтэрфейс: усе рэсурсы даступныя з агульным інтэрфейсам (напрыклад , HTTP GET , POST , PUT , DELETE ) .
Названыя рэсурсы – сістэма складаецца з рэсурсаў , якія называюцца выкарыстоўваючы URL.
Сумежныя прадстаўлення рэсурсаў – Спектаклі рэсурсаў паміж сабой з дапамогай URL -адрасы , што дазваляе кліенту пераходзіць ад аднаго стану да іншага.
Шматузроўневая кампаненты – пасярэднікі , такія як проксі -сервераў , сервераў кэша , шлюзаў і г.д. , могуць быць устаўлены паміж кліентамі і рэсурсаў для падтрымкі прадукцыйнасці , бяспекі і г.д.

Прынцыпы REST Design Web Service
1 . Ключ да стварэння вэб -службаў у сеткі REST (г.зн. Web) з’яўляецца выяўленне ўсіх канцэптуальных аб’ектаў , якія вы хочаце , каб выставіць у выглядзе сэрвісаў. Вышэй мы бачылі , што некаторыя прыклады рэсурсаў: спіс частак , падрабязныя дадзеныя частка , замовы на пастаўку .

2 . Стварыць URL для кожнага рэсурсу. Рэсурсы павінны быць назоўнікі , а ня дзеясловы . Напрыклад , не выкарыстоўвайце гэта :

http://www.parts-depot.com/parts/getPart?id=00345

Звярніце ўвагу на дзеяслоў , GETPART . Замест гэтага выкарыстоўвайце назоўнік :

http://www.parts-depot.com/parts/00345

3 . Класіфікаваць свае рэсурсы ў залежнасці ад таго кліенты могуць проста атрымліваць ўяўленне рэсурсу , або ці могуць кліенты змяніць (дадаць у абранае ) рэсурс . Для першых , зрабіць гэтыя рэсурсы даступнымі з дапамогай HTTP GET . Для пазней , зрабіць гэтыя рэсурсы даступнымі з дапамогай HTTP POST , PUT , і / або выдаляць.

4 . Усе рэсурсы , даступныя праз HTTP GET павінен быць пабочны эфект бясплатна. Гэта значыць , рэсурс павінен проста вярнуцца ўяўленне рэсурсу. Выклік рэсурс не павінна прыводзіць да мадыфікацыі рэсурсу.

5 . Ні адзін чалавек / жанчына не з’яўляецца востравам. Акрамя таго , ніякіх заяваў , павінны быць востравам. Іншымі словамі , паставіць гіперспасылкі ў уяўленняў рэсурсаў , каб кліенты маглі разгарнуць для атрымання дадатковай інфармацыі і / або для атрымання адпаведнай інфармацыі.

6 . Дызайн выявіць дадзеныя паступова. Не адкрыю усё ў адным дакуменце адказу . Забяспечыць гіперспасылкі атрымаць больш падрабязную інфармацыю.

7 . Пакажыце фармат дадзеных адказу , выкарыстоўваючы схему ( DTD , W3C схемы , RelaxNG або Schematron ) . Для тых паслуг , якія патрабуюць POST або PUT да яго , а таксама забяспечыць схему для вызначэння фармату адказу .

8 . Апішыце , як вашыя паслугі , якая будзе выклікана з выкарыстаннем альбо WSDL дакумент , ці проста HTML дакумент.
рэзюмэ
Гэты артыкул апісана REST як архітэктурны стыль. На самай справе , гэта архітэктурны стыль у Інтэрнэце. АДПАЧЫНАК апісвае тое , што робіць вэб – добра працаваць . Прытрымліваючыся прынцыпаў астатнія зробяць вашыя службы працуюць добра ў кантэксце Web.

У наступным артыкуле я напішу аб эвалюцыі Інтэрнэту з выкарыстаннем прынцыпаў астатніх .
пацверджанне
Дзякуючы Роберт Лефтвич і Філіп Eskelin за іх вельмі карысныя каментары ў стварэнні гэтага дакумента .

Comments are closed.