Sobes.tech
Middle+

Vorbește despre regula interfeței uniforme (Uniform Interface).

sobes.tech AI

Răspuns de la AI

Regula Interfeței Uniforme este una dintre cele șase restricții arhitecturale ale REST. Prescrie ca sistemul să utilizeze o abordare unică și standardizată pentru interacțiunea dintre client și server. Acest lucru simplifică și separă arhitectura, îmbunătățește vizibilitatea și facilitează dezvoltarea independentă a clientului și serverului.

Componentele Interfeței Uniforme:

  1. Identificarea resurselor: Resursele trebuie să fie identificabile în mod unic (de obicei prin URI). Aceasta este baza pentru o interacțiune standardizată. Exemplu: /utilizatori/123, /produse/ABC.
  2. Manipularea resurselor prin reprezentările lor: Clientul primește o reprezentare a resursei (de exemplu, în JSON sau XML), care conține suficiente informații pentru a modifica sau șterge resursa pe server. Starea resursei pe server poate fi schimbată trimițând reprezentarea modificată.
  3. Mesaje auto-descriptive: Fiecare mesaj (cerere sau răspuns) trebuie să conțină suficiente informații pentru a fi înțeles complet fără contextul stării serverului sau alte cereri. Aceasta include metadate: tipul de conținut, informații de cache, link-uri către alte resurse etc.
    HTTP/1.1 200 OK
    Content-Type: application/json
    Cache-Control: max-age=3600
    
    {
      "name": "Exemplu Utilizator",
      "links": [
        {
          "rel": "self",
          "href": "/utilizatori/123"
        }
      ]
    }
    
  4. Hipermedia ca Motor al Stării Aplicației (HATEOAS): Permite clientului să navigheze dinamic între resurse, bazându-se pe link-uri hipermediale furnizate de server în răspuns. Clientul nu trebuie să cunoască toate URI-urile în avans, doar punctul de intrare. Serverul ghidează clientul prin acțiuni și resurse disponibile.
    {
      "orderId": "A123",
      "status": "în procesare",
      "links": [
        {
          "rel": "anulare",
          "href": "/comenzi/A123/anulare",
          "method": "POST"
        },
        {
          "rel": "self",
          "href": "/comenzi/A123"
        }
      ]
    }
    

În loc de căi codificate rigid, clientul descoperă posibilitatea de a anula o comandă pe baza prezenței și conținutului link-ului cu rel: "anulare".

O interfață uniformă este critică pentru scalabilitatea și evoluția sistemelor RESTful, deoarece reduce cuplajul între componente.