Разлика между версии на „REST“

1360 байта изтрити ,  преди 3 години
без вътрешни препратки към друга Уикипедия
(без вътрешни препратки към друга Уикипедия)
 
== История ==
Архитектурният стил на "REST"„REST“ е разработен от [http://en.wikipedia.org/wiki/World_Wide_Web_Consortium [W3C]] Technical Architecture Group (TAG) едновременно с HTTP/1.1, базирано на съществуващият дизайн на HTTP/1.0. "[http://en.wikipedia.org/wiki/World_Wide_Web [Word Wide Web]]" представлява най - – голямото осъществяване на архитектурния стил на REST.
REST - – стилът обикновено се състои от [http://en.wikipedia.org/wiki/Client_(computing) клиенти[клиент]]и и [http://en.wikipedia.org/wiki/Server_(computing) сървъри[сървър]. Клиентите инициират заявки към сървърите; сървърите преработват заявките и връщат подходящи отговори. Заявките и отговорите са създадени през прехвърляне на образа на ресурси. [http://en.wikipedia.org/wiki/Web_resource Ресурсът] може да бъде всякаква ясна и смислена концепция, която може да бъде адресирана. [[:en:Representation_(systemics)|Представяне (анг. representation)]] на ресурс обикновено е документ, който намира сегашното възнамерявано състояние на ресурса.
 
Клиентът започва да изпраща заявки, когато е готов да направи преходът към ново състояние. Докато една или повече заявки са неизпълнени за клиента се смята, че е в преход. Представянето на всяко приложение се състои от линкове, които могат да бъдат използвани следващия път, когато клиентът избере да направи нови официални промени.
 
== Условия ==
Архитектурният стил на "REST"„REST“ прилага шест ограничителни условия, като същевременно дава свобода за дизайна и имплементацията на индивидуалните компоненти:
; [[Клиент-сървър]]
: Единният интерфейс разделя клиента и сървъра. Това означава, например, че клиента не се грижи за складирането на данни. Тази задача остава изцяло за сървъра, като по този начин се подобрява портативността на клиентския код (може да се използва в различни среди). Сървърът няма връзка с потребителския интерфейс и по този начин е по-семпъл и лесен за премащабиране. Клиентът и сървърът могат да бъдат заменяни или развивани независимо един от друг, стига това да не налага промяна на единния интерфейс помежду им.
: Единният интерфейс между клиента и сървъра разделя и опростява архитектурата. По този начин всеки компонент може да се развива самостоятелно.
 
Единственото условие на REST архитектурата, което не е задължително е "Код„Код по поискване"поискване“. Всяко приложение (услуга), изпълняващо на гореописаните условия, може да се нарече "RESTful"„RESTful“. Ако нарушава дори едно от условията, то не може да бъде считано за "RESTful"„RESTful“.
 
Всяка разпространена хипермедийна система, съответстваща на архитектурния стил на "REST"„REST“ притежава нужната производителност, мащабируемост, опростеност, гъвкавост, видимост, портативност и надеждност.
 
== RESTful API ==
RESTful уеб API (също наричано RESTful уеб service) е уеб приложение, което използва принципите на HTTP и REST. Представлява колекция от ресурси със четири дефинирани аспектaаспекта:
* Основният "URL"„URL“ за уеб приложенията като http://example.com/resources/
* [http://en.wikipedia.org/wiki/Internet_media_type [Internet media]] типът на данните поддържани от уеб приложенията. Това най-честoчесто е [http://en.wikipedia.org/wiki/JSON [JSON]], но може да бъде всеки друг валиден Интернет медиен тип, като се има предвид, че е валиден хипертекст стандарт.
* Операции поддържани от уеб приложението използвайки [http://en.wikipedia.org/wiki/Request_method [HTTP методи]] (примерно: GET, PUT, POST, или DELETE).
* Приложенията трябва да се задвижват от хипертекст.
 
Таблицата показва как HTTP методите обикновено се използват, за да се създаде уеб приложение.
 
{| class="wikitable"
|+ RESTful уеб API HTTP методи
! Ресурс !! GET !! PUT !! POST !! DELETE
|-
! Collection URI, като <code><nowiki>http://example.com/resources</nowiki></code>
| '''Трие''' адресираният член на колекцията. Третира адресираният член като собствена колекция и прави нов вход за нея.
|}
Методите PUT и DELETE са [http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Idempotent_methods_and_web_applications idempotent methods]. Методът GET е безопасен метод, което означава, че извикването му не причинява [http://en.wikipedia.org/wiki/Side_effect_(computer_science) странични ефекти].
 
За разлика от [http://en.wikipedia.org/wiki/SOAP [SOAP] -] – базираните уеб услуги, няма "официален"„официален“ стандарт за RESTful уеб API. Това е така, защото REST е архитектурен стил за разлика от SOAP, който е протокол. Въпреки, че REST не е стандарт, REST имплементация като Уеб може да използва стандарти като [http://en.wikipedia.org/wiki/HTTP [HTTP]], [http://en.wikipedia.org/wiki/URI [URL]], [http://en.wikipedia.org/wiki/[XML]], XML]и etcдр.
 
== Интерфейс ==
Единният интерфейс на REST се счита за основа на дизайна на всяка REST услуга.
 
'''; Идентификация на ресурсите'''
:Отделните ресурси се разпознават по заявките (например използвайки [[http://en.wikipedia.org/wiki/Uniform_resource_identifier URIs]] в уеб-базирани REST системи). Самите ресурсите са отделни от изображението, което се изпраща на клиента. Например сървърът вместо да изпраща цялата база данни, изпраща [[HTML]], [[XML]] или [[JSON]], които представляват някакви записи в нея.
 
'''; Управление на ресурс чрез изображение'''
:Имайки изображение на ресурса, клиента има достатъчно информация, с която може да променя или трие ресурсите от сървъра, в случай че има разрешението да го направи.
 
'''; Самоописващи съобщения'''
:Всяко съобщение включва информация, която описва как да се обработи съобщението.
 
''';HATEOAS (Hypermedia as the Engine of Application State)'''
:[[http://en.wikipedia.org/wiki/HATEOAS HATEOAS]] е ограничението, което отличава архитектурата на REST приложението от повечето архитектури на мрежови приложения. При нея клиента „общува“ с приложението изцяло чрез [[http://en.wikipedia.org/wiki/Hypermedia hypermedia]], получена динамично от сървърaсървъра.
 
== Примери за Rest ==
Rest може да бъде намерен в много места на публичния уеб.
* [http://en.wikipedia.org/wiki/Atom_(standard) [Atom Publishing Protocol]] за публикуване към блогове се смята за канонически протокол. <ref>[http://tools.ietf.org/html/rfc5023 RESTful протокол].</ref>
* [http://en.wikipedia.org/wiki/Sun_Microsystems [Sun Microsystems]'] <ref>[https://kenai.com/projects/suncloudapis/pages/Home Cloud API]</ref> е добър пример за документация, тип медия.
* Инициативата Open Services for Lifecycle Collaboration (OSLC) <ref>[http://open-services.net/html/Home.html Open Services for Lifecycle Collaboration (OSLC)]</ref> създава RESTful подход към обединяване на софтуерни продукти.
* [http://en.wikipedia.org/wiki/CouchDB [CouchDB]] е документно ориентирана база данни написана в [http://en.wikipedia.org/wiki/Erlang_(programming_language) Erlang], която предоставя RESTful JSON API, който може да достъпен от всяка среда, която поддържа HTTP молби.
* [http://en.wikipedia.org/wiki/MySQL_Cluster [MySQL Cluster]] база данни достижима през прост REST/JSON <ref>[https://code.google.com/p/mod-ndb/ REST/JSON]</ref> интерфейс като Apache модул.
* Canonical REST Entity Service на [[Microsoft]].<ref>[http://code.msdn.microsoft.com/cannonicalRESTEntity Canonical REST Entity Service] на [http:<//en.wikipedia.org/wiki/Microsoft Microsoft].ref>
* [http://en.wikipedia.org/wiki/Nuxeo [Nuxeo]], open sourse документ мениджър, създава Content Automation интерфейс чрез REST API<ref>[https://doc.nuxeo.com/display/NXDOC/REST+API REST API]</ref>.
* [http://en.wikipedia.org/wiki/Restful_Objects [Restful Objects]], публична спецификация за общ RESTful API за всеки домейн обект модел.
* [http://en.wikipedia.org/wiki/Sones_GraphDB [Sones GraphDB]] е графа - – ориентирана база данни написана на C#, която предоставя RESTful интерфейс.
* Поддръжката на Google Fusion Tables включва RESTful API.<ref>[https://developers.google.com/fusiontables/ RESTful API]</ref>
 
== Вижте също ==
* [http://en.wikipedia.org/wiki/RSDL RSDL] (RESTful Service Description Language)
* [http://en.wikipedia.org/wiki/Clean_URL Clean URLs]
* [http://en.wikipedia.org/wiki/Create,_read,_update_and_delete Create, read, update and delete] (CRUD)
* [http://en.wikipedia.org/wiki/Resource-oriented_architecture Resource-oriented architecture] (ROA)
* [http://en.wikipedia.org/wiki/Service-oriented_architecture Service-oriented architecture] (SOA)
* [http://en.wikipedia.org/wiki/Resource-oriented_computing Resource-oriented computing] (ROC)
* [[HTTP]]
* [[уеб приложение]]
== Източници ==
<references />
 
http://rest.elkstein.org/2008/02/what-is-rest.html
== Външни препратки ==
http://www.techopedia.com/definition/1312/representational-state-transfer-rest
* http://rest.elkstein.org/2008/02/what-is-rest.html
* http://www.techopedia.com/definition/1312/representational-state-transfer-rest
 
[[Категория:Интернет протоколи]]