Разбиране на REST, пролет на руски!
REST (Представителен държавен трансфер) е въведен и дефиниран през 2000 г. от Рой Филдинг в докторската си дисертация. REST е архитектурен стил за проектиране на разпределени системи. Това не е стандарт, но дефинира ограничения като липса на гражданство, комуникация клиент-сървър и единен интерфейс. REST не е строго свързан с HTTP, но най-често е свързан с него.
REST принципи
- Ресурси улесняват разбирането на структурата на директориите на URI
- Представителство предават JSON или XML като представяне на обектни данни и атрибути
- Публикации използвайте изрично HTTP методи (напр. GET, POST, PUT и DELETE)
- Липса на държава взаимодействията не запазват клиентския контекст на сървъра между заявките
HTTP методи
HTTP методите се използват за определяне на CRUD (създаване, извличане, актуализиране, изтриване) операции за HTTP заявки.
Получаване на информацията. GET заявките трябва да бъдат безопасни и идемпотентни, т.е. колкото и дълго да се повтарят със същите най-високи параметри, резултатът ще остане същият. Те могат да имат странични ефекти, но потребителят не ги очаква, така че те не могат да бъдат критични за функционирането на системата. Заявките също могат да бъдат частични или условни.
Искане да се направи нещо с ресурса чрез URI с предоставяне на обект. POST често се използва за създаване на нов обект, но също така е възможно да се използва за актуализиране на съществуващ.
Съхранява обект от URI. PUT може да създаде нов обект или да актуализира съществуващ. Искането за PUT е идемпотентно. Идемпотентността е основната разлика в поведението между заявките PUT и POST.
Актуализира само конкретни полета на обект чрез URI. Искането за PATCH е идемпотентно. Идемпотентността е основната разлика в поведението между заявките PUT и POST.
Заявка, която изтрива ресурс; освен това ресурсът не трябва да се премахва веднага. Това може да бъде асинхронна или продължителна заявка.
HTTP кодове на състоянието
Кодовете на състоянието показват резултата от HTTP заявка.
- 1XX - информационен
- 2XX - успешно изпълнение
- 3XX - пренасочване
- 4XX - грешка на клиента
- 5XX - грешка на сървъра
Видове носители
HTTP заглавията Accept и Content-Type могат да се използват за описание на съдържанието, което трябва да бъде изпратено или поискано от HTTP заявката. Клиентът може да зададе Accept на application/json, ако поиска JSON отговор. И обратно, когато данните се изпращат, зададеният Content-Type в application/xml казва на клиента, че данните са изпратени в XML форма.