Sobes.tech
Junior

Какво е REST?

sobes.tech AI

Отговор от AI

REST (Representational State Transfer) е архитектурен стил за изграждане на разпределени системи, който се използва главно при проектирането на уеб услуги. Той се основава на набор от принципи и ограничения, които определят как уеб ресурсите взаимодействат помежду си.

Ключови принципи на REST:

  • Клиент-сървър: Ясно разделение на отговорностите между клиента и сървъра.
  • Без състояние (stateless): Сървърът не съхранява информация за състоянието на клиента между заявките. Всяка заявка съдържа цялата необходима информация за обработка.
  • Кешируемост: Клиентите могат да кешират отговорите на сървъра за подобряване на производителността. Сървърът ясно указва дали отговорът може да бъде кеширан.
  • Слоеста система: Клиентът може да взаимодейства с междинен слой (например, прокси, балансировчик на натоварване), без да знае за това.
  • Код по искане (по желание): Сървърът може да прехвърля изпълним код към клиента (например, JavaScript), разширявайки функционалността му.
  • Единен интерфейс: Най-важният принцип, който включва следните ограничения:
    • Идентификация на ресурсите (URI).
    • Манипулация на ресурсите чрез представяния (обмен на данни в определен формат, например JSON, XML).
    • Самоописващи се съобщения (съобщенията съдържат цялата необходима информация за тяхното разбиране).
    • HATEOAS (Hypermedia като двигателя на състоянието на приложението): Клиентът преминава между състоянията на приложението, използвайки хипервръзки, съдържащи се в отговорите на сървъра.

RESTful API е реализация на REST стил за уеб услуги, използваща стандартните HTTP методи (GET, POST, PUT, DELETE) за работа с ресурсите.

// Пример за използване на HTTP методи в RESTful API
// Получаване на ресурс
// GET /api/products/1

// Създаване на ресурс
// POST /api/products
// Тяло: { "name": "Нов продукт", "price": 10.50 }

// Актуализиране на ресурс
// PUT /api/products/1
// Тяло: { "name": "Актуализиран продукт", "price": 11.00 }

// Изтриване на ресурс
// DELETE /api/products/1