Sobes.tech
Middle

Kas yra išteklių orientuotas modelis (ROM)?

sobes.tech AI

Atsakymas iš AI

Resursų orientuotas modelis (Resourse-Oriented Model) — tai požiūris į API projektavimą, kur pagrindinės sistemos esybės pateikiamos kaip ištekliai, su kuriais galima atlikti standartines operacijas, tokias kaip kurti, skaityti, atnaujinti ir ištrinti (CRUD), naudojant standartinius HTTP metodus.

Pagrindiniai principai:

  • Ištekliai: Pagrindiniai sistemos komponentai, turintys unikalų identifikatorių (URI). Pavyzdžiui, "vartotojas", "užsakymas", "produktas".
  • Vienodas sąsajos dizainas: Naudojant standartinius HTTP metodus (GET, POST, PUT, PATCH, DELETE) operacijoms su ištekliais atlikti.
  • Išteklio identifikavimas: Kiekvienas išteklius turi unikalų URI.
  • Atvaizdai (Representations): Ištekliai gali turėti įvairius atvaizdus (pvz., JSON, XML), kurie suderinami tarp kliento ir serverio.
  • Ryšiai tarp išteklių (Hypermedia): Ištekliai gali turėti nuorodų į susijusius išteklius, leidžiančius klientui naršyti API.

Pavyzdys:

// Gauti vartotojų sąrašą
GET /users

// Gauti konkretų vartotoją
GET /users/123

// Kurti naują vartotoją
POST /users
Content-Type: application/json

{
  "name": "Ivan",
  "email": "ivan@example.com"
}

// Atnaujinti vartotoją
PUT /users/123
Content-Type: application/json

{
  "name": "Ivan Petrov"
}

// Dalinis vartotojo atnaujinimas
PATCH /users/123
Content-Type: application/json

{
  "email": "ivan.petrov@example.com"
}

// Ištrinti vartotoją
DELETE /users/123

Privalumai:

  • Paprasta ir standartizuota: Lengva suprasti ir naudoti, taikant standartines interneto technologijas.
  • Mastelio keitimas: Tinka kurti paskirstytas sistemas.
  • Talpinimas (Caching): Galimybė talpinti išteklių atvaizdus, siekiant pagerinti našumą.
  • Kliento ir serverio nepriklausomybė: Duomenų atvaizdo atskyrimas nuo jų saugojimo ir apdorojimo.

Trūkumai:

  • Gali būti neefektyvus sudėtingoms operacijoms, kurios nesutampa su CRUD.
  • Ne visada tinkamas stateful paslaugoms.

ROM yra pagrindas RESTful API kūrimui.