Sobes.tech
Junior

Kas yra REST API?

sobes.tech AI

Atsakymas iš AI

REST API – tai architektūros stilius paskirstytoms sistemoms kurti. REST pagrindiniai principai:

  • Statelessness: Kiekvienas užklausimas iš kliento į serverį turi būti pilnas ir turėti visą reikalingą informaciją apdorojimui. Serveris nesaugo kliento būsenos tarp užklausų.
  • Client-Server: Aiškus atsakomybės pasidalijimas tarp kliento ir serverio. Klientas siunčia užklausas, serveris jas apdoroja.
  • Cacheable: Serveris turi nurodyti, ar atsakymai gali būti saugomi talpykloje (cache).
  • Layered System: Klientas neprivalo tiesiogiai bendrauti su galutiniu serveriu; jis gali naudoti tarpinio sluoksnio (proksio, apkrovos balansavimo) tarpininkus.
  • Uniform Interface: Vienodas ir standartizuotas būdas sąveikai tarp kliento ir serverio. Šis principas apima:
    • Identification of Resources: ištekliai (duomenys) identifikuojami per URL.
    • Manipulation of Resources Through Representations: Klientas sąveikauja su ištekliais, gaudamas jų reprezentacijas (pvz., JSON, XML) ir siunčiant naujas reprezentacijas keitimui.
    • Self-descriptive Messages: Kiekviena žinutė turi pakankamai informacijos, kad būtų galima suprasti, kaip ją apdoroti.
    • HATEOAS (Hypertext As The Engine Of Application State): ištekliai turi turėti nuorodas (hipersaitus) į susijusius išteklius ir prieinamas veiklas.

REST API dažniausiai naudoja standartinius HTTP metodus veiksmams atlikti su ištekliais:

  • GET: gauti išteklių arba išteklių kolekciją.
  • POST: sukurti naują išteklių.
  • PUT: visiškai atnaujinti esamą išteklių.
  • PATCH: dalinai atnaujinti esamą išteklių.
  • DELETE: ištrinti išteklių.

Pavyzdinis JSON išteklių reprezentavimas:

{
  "id": 1, // Identifikatorius
  "name": "Resource Name", // Išteklių pavadinimas
  "description": "Detailed description of the resource." // Išteklių aprašymas
}

REST API testavimas apima:

  • Funkcionalumo patikrinimą (teisingus atsakymus į užklausas)
  • klaidų apdorojimą
  • našumą
  • saugumą
  • dokumentacijos atitiktį.