ce este un API REST?

posted in: Articles | 0

REST sau RESTful API design (Representational State Transfer) este proiectat pentru a profita de protocoalele existente. În timp ce restul poate fi utilizat pe aproape orice protocol, acesta profită de obicei de HTTP atunci când este utilizat pentru API-uri Web. Aceasta înseamnă că dezvoltatorii nu trebuie să instaleze biblioteci sau software suplimentar pentru a profita de un design REST API. REST API Design a fost definit de Dr. Roy Fielding în lucrarea sa de doctorat 2000. Este remarcabil pentru stratul său incredibil de flexibilitate., Deoarece datele nu sunt legate de metode și resurse, REST are capacitatea de a gestiona mai multe tipuri de apeluri, de a returna diferite formate de date și chiar de a schimba structural cu implementarea corectă a hypermedia.această libertate și flexibilitate inerente designului API REST vă permit să construiți un API care să răspundă nevoilor dvs., satisfăcând în același timp nevoile clienților foarte diversi. Spre deosebire de SOAP, REST nu este constrâns la XML, ci poate returna XML, JSON, YAML sau orice alt format în funcție de ceea ce solicită clientul., Și spre deosebire de RPC, utilizatorii nu sunt obligați să cunoască numele procedurilor sau parametrii specifici într-o anumită ordine.cu toate acestea, există dezavantaje la REST API design. Puteți pierde capacitatea de a menține starea în repaus, cum ar fi în cadrul sesiunilor, și poate fi mai dificil pentru dezvoltatorii mai noi de a utiliza. De asemenea, este important să înțelegeți ce face un API REST RESTful și de ce există aceste constrângeri înainte de a vă construi API-ul. La urma urmei, dacă nu înțelegeți de ce ceva este proiectat în modul în care este, vă puteți împiedica eforturile fără să vă dați seama.,

înțelegerea REST API Design

în timp ce cele mai multe API-uri pretind a fi odihnitor, acestea se încadrează scurt de cerințele și constrângerile afirmate de Dr.Fielding. Există șase constrângeri cheie pentru REST API design pentru a fi conștienți de atunci când se decide dacă acesta este tipul API potrivit pentru proiectul dumneavoastră.

Client-Server

constrângerea client-server funcționează pe conceptul că clientul și serverul ar trebui să fie separate unul de celălalt și să li se permită să evolueze individual și independent., Cu alte cuvinte, ar trebui să pot face modificări la aplicația mea mobilă fără a afecta nici structura de date, nici designul bazei de date de pe server. În același timp, ar trebui să pot modifica baza de date sau să fac modificări la aplicația serverului meu fără a afecta clientul mobil. Acest lucru creează o separare a preocupărilor, permițând fiecărei aplicații să crească și să se extindă independent de cealaltă și permițând organizației dvs. să crească rapid și eficient.,API-urile REST sunt apatride, ceea ce înseamnă că apelurile pot fi efectuate independent unul de celălalt și fiecare apel conține toate datele necesare pentru a se finaliza cu succes. Un API REST nu ar trebui să se bazeze pe datele stocate pe server sau sesiuni pentru a determina ce să facă cu un apel, ci mai degrabă să se bazeze exclusiv pe datele furnizate în acel apel în sine. Informațiile de identificare nu sunt stocate pe server atunci când efectuați apeluri. În schimb, fiecare apel are datele necesare în sine, cum ar fi cheia API, tokenul de acces, ID-ul utilizatorului etc., Acest lucru ajută, de asemenea, la creșterea fiabilității API, având toate datele necesare pentru a efectua apelul, în loc să se bazeze pe o serie de apeluri cu starea serverului pentru a crea un obiect, ceea ce poate duce la eșecuri parțiale. În schimb, pentru a reduce cerințele de memorie și pentru a menține aplicația cât mai scalabilă, un API RESTful necesită ca orice stare să fie stocată pe client—nu pe server.deoarece un API apatrid poate crește cheltuielile generale de solicitare prin gestionarea unor sarcini mari de apeluri de intrare și de ieșire, un API REST ar trebui să fie proiectat pentru a încuraja stocarea datelor care pot fi stocate în cache., Aceasta înseamnă că atunci când datele pot fi stocate în cache, răspunsul ar trebui să indice că datele pot fi stocate până la un anumit timp (expiră) sau în cazurile în care datele trebuie să fie în timp real, că răspunsul nu ar trebui să fie memorat în cache de către client. Prin activarea acestei constrângeri critice, nu numai că veți reduce foarte mult numărul de interacțiuni cu API-ul dvs., reducând utilizarea serverului intern, dar veți oferi utilizatorilor API instrumentele necesare pentru a oferi cele mai rapide și mai eficiente aplicații posibile. Rețineți că cache-ul se face pe partea clientului., În timp ce este posibil să puteți memora în cache unele date din arhitectura dvs. pentru a efectua performanța generală, intenția este de a instrui clientul cu privire la modul în care ar trebui să procedeze și dacă Clientul poate stoca sau nu datele temporar.

interfață uniformă

cheia pentru clientul decuplarea de la server are o interfață uniformă, care permite evoluția independentă a aplicației, fără a avea serviciile aplicației, modele, sau acțiuni strâns cuplat la stratul API în sine., Interfața uniformă permite clientului să vorbească cu serverul într-o singură limbă, independent de backend-ul arhitectural al fiecăruia. Această interfață ar trebui să ofere un mijloc neschimbat, standardizat de comunicare între client și server, cum ar fi utilizarea HTTP cu resurse URI, CRUD (Creare, citire, actualizare, ștergere) și JSON.

sistem stratificat

după cum sugerează și numele, un sistem stratificat este un sistem format din straturi, fiecare strat având o funcționalitate și o responsabilitate specifice., Dacă ne gândim la un model View Controller framework, fiecare strat are propriile responsabilități, modelele cuprinzând modul în care ar trebui formate datele, controlerul concentrându-se pe acțiunile primite și vizualizarea concentrându-se pe ieșire. Fiecare strat este separat, dar interacționează și cu celălalt. În REST API design, același principiu este valabil, cu diferite straturi ale arhitecturii care lucrează împreună pentru a construi o ierarhie care ajută la crearea unei aplicații mai scalabile și modulare.,

un sistem stratificat vă permite, de asemenea, să încapsulați sistemele vechi și să mutați funcționalitatea mai puțin accesată la un intermediar partajat, protejând în același timp componentele mai moderne și utilizate în mod obișnuit de ele. În plus, sistemul stratificat vă oferă libertatea de a muta sistemele în și din arhitectura dvs. pe măsură ce tehnologiile și serviciile evoluează, sporind flexibilitatea și longevitatea atâta timp cât păstrați diferitele module cât mai puțin cuplate posibil., Există beneficii substanțiale de securitate de a avea un sistem stratificat, deoarece vă permite să opriți atacurile la stratul proxy sau în alte straturi, împiedicându-le să ajungă la arhitectura serverului dvs. real. Prin utilizarea unui sistem stratificat cu un proxy sau prin crearea unui singur punct de acces, puteți păstra aspectele critice și mai vulnerabile ale arhitecturii dvs. în spatele unui firewall, împiedicând interacțiunea directă cu acestea de către client., Rețineți că securitatea nu se bazează pe o singură soluție „stop all”, ci mai degrabă pe a avea mai multe straturi, înțelegând că anumite verificări de securitate pot eșua sau pot fi ocolite. Ca atare, cu cât mai multă securitate puteți implementa în sistemul dvs., cu atât este mai probabil să preveniți atacurile dăunătoare.poate cea mai puțin cunoscută dintre cele șase constrângeri și singura constrângere opțională, Code on Demand permite transmiterea codului sau a applet-urilor prin API pentru a fi utilizate în cadrul aplicației., În esență, creează o aplicație inteligentă care nu mai depinde numai de propria structură de cod. Cu toate acestea, poate pentru că este înaintea timpului său, Code on Demand s-a luptat pentru adopție, deoarece API-urile Web sunt consumate în mai multe limbi, iar transmiterea codului ridică întrebări și preocupări de securitate. (De exemplu, directorul ar trebui să fie scris, iar firewall-ul ar trebui să lase ceea ce poate fi în mod normal restricționat prin conținut.împreună, aceste constrângeri alcătuiesc teoria transferului de Stat reprezentativ sau a odihnei., Pe măsură ce priviți înapoi prin acestea, puteți vedea cum fiecare constrângere succesivă se bazează pe partea de sus a precedentului, creând în cele din urmă o interfață destul de complexă—dar puternică și flexibilă—a programului de aplicație. Dar cel mai important, aceste constrângeri alcătuiesc un design care funcționează similar cu modul în care accesăm paginile din browserele noastre de pe World Wide Web. Creează un API care nu este dictat de arhitectura sa, ci de reprezentările pe care le returnează și un API care—deși din punct de vedere arhitectural apatrid—se bazează pe reprezentare pentru a dicta starea aplicației.,

Pentru mai multe informații despre REST API Design, a verifica afară de eBook rest netulburată: un ghid pentru proiectarea API perfectă.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *