Un API, acronim pentru Interfață de Programare a Aplicațiilor, acționează ca un canal de comunicare esențial. El permite aplicațiilor să acceseze resurse specifice din alte aplicații, facilitând interacțiunea și schimbul de date între ele.
Un beneficiu major al utilizării unui API constă în abilitatea de a controla accesul aplicațiilor terțe. În loc să ofere acces complet la toate datele, un API permite dezvoltatorilor să expună doar anumite informații, limitând riscul de securitate și oferind un control mai mare asupra modului în care datele sunt utilizate.
În interacțiunea API, aplicația sau utilizatorul care solicită date este denumit client, iar aplicația care pune la dispoziție datele este numită server. Această structură client-server este fundamentală în funcționarea API-urilor.
API-urile sunt omniprezente în arhitecturile software moderne. Indiferent dacă aspirați la un rol de front-end, back-end, full-stack sau inginerie de rețea, familiaritatea cu conceptele API este crucială. Veți întâmpina frecvent întrebări legate de API-uri în timpul procesului de interviu.
În continuare, vom explora câteva dintre cele mai comune întrebări despre API-urile REST, un stil arhitectural dominant în dezvoltarea API-urilor.
Ce este REST?
REST, sau Representational State Transfer, este un stil de arhitectură care impune anumite constrângeri în dezvoltarea API-urilor. API-urile care respectă aceste constrângeri sunt etichetate ca API-uri RESTful. REST nu este un protocol sau un standard, ci un set de principii care pot fi implementate în diverse moduri pentru a crea API-uri flexibile și scalabile.
Această abordare oferă dezvoltatorilor o mare libertate și adaptabilitate, motiv pentru care este larg utilizată. Principiile cheie ale arhitecturii REST sunt:
- Separarea clientului și serverului: Într-un API RESTful, clientul inițiază solicitări de date folosind un URI (Identificator Uniform de Resurse), fără a influența funcționarea serverului. Serverul, la rândul său, nu modifică starea clientului.
- Apatridia: Fiecare solicitare este independentă, fără a reține informații despre solicitările anterioare. O solicitare este tratată, iar apoi conexiunea se închide. Nu există o persistență a stării între diferitele solicitări.
- Arhitectura stratificată: Clientul nu este conștient dacă cererea sa ajunge direct la sursă sau trece printr-un sistem intermediar. Singurul lucru care contează pentru client este răspunsul.
- Memorarea în cache: Atât clientul, cât și serverul pot stoca temporar datele pentru a îmbunătăți performanța și scalabilitatea. Pentru solicitările frecvente, răspunsul poate fi preluat din cache, evitând un nou proces de la zero.
Care sunt unele caracteristici cheie ale REST?
Caracteristicile fundamentale ale REST includ:
- Flexibilitate: API-urile RESTful permit schimbarea serverelor fără a afecta răspunsurile la solicitări. De asemenea, se pot adăuga puncte finale pentru diverse tipuri de date, facilitând extinderea și adaptabilitatea.
- Scalabilitate: Mecanismul de memorare în cache contribuie semnificativ la scalabilitate, deoarece stocarea răspunsurilor reduce sarcina serverului și timpul de răspuns.
- Autorizare: Prin intermediul antetului de autorizare, se pot specifica acreditările clientului, pe care serverul le utilizează pentru a verifica permisiunea de acces.
- Apatridia: Această caracteristică crucială asigură independența solicitărilor, prevenind interdependențele nedorite și simplificând gestionarea lor.
Ce sunt resursele într-o arhitectură REST?
Resursele sunt entități asupra cărora se pot efectua operațiuni precum preluare, actualizare sau ștergere. Ele reprezintă elementele de bază ale arhitecturii REST. De exemplu, într-un magazin online, produsele, utilizatorii și metadatele sunt considerate resurse, deoarece ele pot fi manipulate și transferate prin API.
Menționați câteva avantaje și dezavantaje ale unui API REST.
Avantajele API-urilor REST includ:
- Simplitatea implementării.
- Gestionarea eficientă a resurselor.
- Scalabilitatea datorită arhitecturii client-server.
- Suportul pentru multiple tipuri de media (ex. XML, JSON).
Dezavantajele sunt:
- Imposibilitatea menținerii stării între solicitări.
- Dificultatea de a determina originea reală a unei resurse datorită arhitecturii stratificate.
- Nu este ideal pentru interogări complexe sau solicitări complicate.
Definiți șablonul REST.
Șablonul REST este un utilitar sau un client folosit în cadrul Spring pentru a interacționa cu API-urile REST. Acesta abstractizează codul standard necesar pentru solicitarea resurselor de la un API REST, simplificând interacțiunea.
Ce este RESTful?
API-urile sau serviciile RESTful sunt interfețe care respectă stilul arhitectural REST și utilizează protocoale precum HTTP pentru funcționare. Acestea implementează principiile REST pentru a oferi o modalitate standardizată și eficientă de comunicare între aplicații.
Ce sunt serviciile web RESTful?
Serviciile web RESTful sunt special concepute pentru a funcționa optim pe web. Prin aplicarea constrângerilor specifice ale stilului arhitectural REST (interfață uniformă, arhitectură stratificată, apatridie), aceste servicii obțin proprietăți de performanță și scalabilitate sporite, care le fac ideale pentru funcționarea pe internet.
Cum puteți testa serviciile web RESTful?
Testarea serviciilor web RESTful se poate realiza cu clienți REST precum Postman sau Thunder Client. Acesta presupune solicitarea serviciului web și, ulterior, analiza și înțelegerea răspunsului primit. Pentru API-uri complexe, testarea trebuie structurată în etape de testare unitară, testare de integrare, testare de performanță și testare end-to-end.
Menționați câteva caracteristici ale serviciilor web RESTful.
Caracteristicile importante ale serviciilor web RESTful sunt:
- Suportul pentru multiple formate media, ca JSON și XML.
- Scalabilitatea crescută.
- Izolarea clientului de server.
- Flexibilitatea oferită de arhitectura REST.
Definiți clasele de resurse rădăcină RESTful.
Clasele de resurse rădăcină sunt clase Java simple (POJO) care sunt adnotate cu @Path sau au cel puțin o metodă adnotată cu @Path sau un desemnator de metodă de solicitare (ex. @GET, @POST, @PUT, @DELETE). Aceste clase definesc resursele disponibile prin API.
Ce este URI?
URI, sau Identificator Uniform de Resurse, este o secvență de caractere folosită pentru a identifica sau a localiza resursele într-un API sau serviciu. URI-ul utilizează numele sau locația resursei, fără a se baza pe o metodă specifică de acces.
Ce este apatridia în REST?
Apatridia este o constrângere REST care dictează că nici o solicitare nu trebuie să rețină informații despre cele anterioare. Starea nu este menținută, iar o solicitare este finalizată odată cu primirea răspunsului. Aceasta implică faptul că fiecare interacțiune este complet independentă și izolată de celelalte.
Ce este JAX-RS?
JAX-RS este un API Java care facilitează dezvoltarea aplicațiilor REST în Java. Acest API oferă un set de instrumente și adnotări pentru a simplifica crearea și gestionarea serviciilor web RESTful.
Care sunt adnotările cheie în API-ul JAX-RS?
Adnotările JAX-RS sunt utilizate pentru a defini resursele și metodele asociate. Câteva adnotări cheie sunt:
- @GET: Utilizată pentru solicitări GET în HTTP.
- @POST: Utilizată pentru solicitări POST în HTTP.
- @Path: Definește calea relativă a unei clase Java.
- @QueryParam: Definește parametrii de interogare din URI sau URL.
Care sunt câteva caracteristici cheie ale API-ului JAX-RS?
Caracteristicile principale ale JAX-RS sunt:
- Memorarea în cache pe partea clientului.
- Memorarea în cache pe partea serverului.
- Personalizarea șirurilor de interogare.
- Utilizarea adnotărilor la rulare.
Cum pot fi configurate aplicațiile JAX-RS?
O aplicație JAX-RS constă dintr-o clasă de resurse, ambalată într-un fișier WAR. URI-ul de bază de la care aplicația răspunde la solicitări poate fi configurat prin:
- Utilizarea adnotării @ApplicationPath într-o subclasă de javax.ws.rs.core.Application, ambalată în WAR.
- Utilizarea etichetei servlet-mapping în descriptorul de implementare web.xml al WAR.
Ce sunt JAX-WS și JAX-RS?
JAX-WS este un API Jakarta XML Web Services folosit pentru a dezvolta API-uri care utilizează SOAP (Simple Object Access Protocol), un protocol de mesagerie bazat pe XML. Pe de altă parte, JAX-RS este un API Java pentru crearea de servicii web bazate pe arhitectura REST. Aceste două API-uri abordează diferite moduri de implementare a serviciilor web.
Ce sunt codurile de stare HTTP?
Codurile de stare HTTP sunt modalități prin care serverul comunică starea răspunsului către client. Aceste coduri sunt incluse în anteturile de răspuns și indică dacă solicitarea a reușit, a eșuat sau a întâmpinat erori.
Câteva coduri de stare comune sunt:
- 200 – OK: Indică faptul că solicitarea a fost finalizată cu succes.
- 404 – Not Found: Resursa solicitată nu a fost găsită pe server.
- 500 – Internal Server Error: O eroare internă a împiedicat serverul să genereze un răspuns valid.
- 503 – Service Unavailable: Serverul nu poate procesa solicitări, posibil datorită supraîncărcării sau mentenanței.
Ce sunt metodele HTTP?
Metodele HTTP sunt verbe care definesc acțiunile efectuate asupra unei resurse API. De exemplu, metoda GET este folosită pentru preluarea datelor, în timp ce metoda POST poate fi utilizată pentru a actualiza datele.
Metodele HTTP utilizate frecvent includ:
- GET: Preluarea datelor de la server.
- POST: Trimiterea de date către server pentru actualizare.
- DELETE: Ștergerea unei resurse specificate.
- PATCH: Modificarea parțială a unei resurse.
Cum funcționează autentificarea de bază HTTP?
Autentificarea este un proces de verificare a identității unui client. Autentificarea de bază HTTP folosește un antet de autorizare, care conține numele de utilizator și parola clientului. Serverul verifică aceste informații și, în caz de succes, acordă accesul.
Este important de menționat că atunci când se utilizează autentificarea HTTP, canalul de comunicare trebuie criptat și securizat, de preferință prin utilizarea protocolului HTTPS, pentru a proteja acreditările.
Care sunt componentele de bază ale solicitării HTTP?
O solicitare HTTP include următoarele:
- Linia de solicitare: Conține metoda HTTP, calea resursei și versiunea HTTP.
- Antete: Furnizează metadate despre solicitare.
- Corpul (Opțional): Conține datele propriu-zise ale solicitării (prezent doar pentru metode ca POST).
Care sunt componentele de bază ale răspunsului HTTP?
Un răspuns HTTP conține:
- Starea: Codul de stare HTTP.
- Antete: Informații suplimentare despre răspuns.
- Mesajul: Datele transmise de server către client.
Care este diferența dintre REST și AJAX?
AJAX este o tehnologie client care permite efectuarea de solicitări asincrone folosind JavaScript, în timp ce REST este un stil arhitectural pentru dezvoltarea API-urilor RESTful. AJAX este folosit pentru a interacționa cu API-urile, în timp ce REST este modelul după care sunt construite aceste API-uri. În esență, AJAX este un instrument, iar REST este o abordare de design.
Care este diferența dintre SOAP și REST?
REST este o arhitectură flexibilă, cu constrângeri minime, în timp ce SOAP este un protocol rigid cu cerințe stricte. REST permite diverse tipuri de transfer de date (JSON, XML), în timp ce SOAP se bazează exclusiv pe XML. REST este considerat mai ușor și mai rapid, în timp ce SOAP oferă securitate încorporată, dar este mai complex.
Care este diferența dintre PUT și POST?
Metoda POST trimite date către server pentru a crea o resursă, dar poate genera efecte secundare în cazul mai multor solicitări identice. Metoda PUT, în schimb, trimite date pentru a actualiza o resursă, creând o nouă resursă dacă aceasta nu există deja. PUT este idempotent, în timp ce POST nu este. Aceasta înseamnă că mai multe cereri PUT identice nu vor avea efecte secundare, în timp ce mai multe cereri POST pot genera rezultate neașteptate.
Ce este o sarcină utilă?
O sarcină utilă, în contextul unui API REST, reprezintă corpul solicitării trimise de la client la server. Acesta conține datele care sunt transmise către server pentru procesare.
Care este dimensiunea maximă a încărcăturii utile care poate fi trimisă în metodele de postare?
Protocolul HTTP nu impune o limită implicită pentru dimensiunea încărcăturii utile. Limita efectivă este determinată de restricțiile maxime ale clientului sau serverului, oricare dintre acestea este mai mică.
În timpul creării URI, care sunt cele mai bune practici care trebuie urmate?
Cele mai bune practici pentru crearea URI-urilor includ:
- Evitarea extensiilor de fișiere.
- Menținerea consecvenței în toate URI-urile.
- Împărțirea URI-urilor în domenii și subdomenii.
- Utilizarea cratimei sau a subliniere pentru a separa cuvintele.
- Utilizarea barei oblice pentru a indica ierarhia resurselor.
- Codificarea corectă a URI-ului.
- Crearea URI-urilor care sunt ușor de citit și înțeles.

Ce sunt metodele idempotente?
Metodele HTTP idempotente au același efect asupra serverului indiferent de câte ori sunt solicitate. De exemplu, trimiterea mai multor cereri DELETE identice pentru o resursă are același efect ca o singură cerere. Metode idempotente includ PUT, DELETE, GET, HEAD, și OPTIONS.
Metodele HTTP idempotente includ:
- PUT
- DELETE
- GET
- HEAD
- OPTIONS
Ce este Poștașul?
Postman este un instrument popular pentru dezvoltarea, testarea și modificarea API-urilor. Acesta oferă un mediu eficient pentru a construi și testa rapid API-uri, fără a fi necesară configurarea unui client personalizat.

Antetul Cache-Control conține instrucțiuni care controlează modul în care browserele și serverele stochează în cache răspunsurile. Acesta definește ce date trebuie memorate în cache și cât timp. Directivale principale ale Cache-Control sunt:
- max-age
- no-cache
- private
- public
- no-store
- immutable
Definiți mesageria în serviciile web RESTful.
Mesageria într-un serviciu web RESTful se referă la comunicarea dintre client și server prin solicitări și răspunsuri HTTP. Clientul trimite o solicitare, iar serverul răspunde, finalizând ciclul de mesagerie.
Care este diferența dintre arhitectura monolitică, SOA și microservicii?
Arhitectura monolitică gestionează întreaga aplicație într-un singur bloc. SOA (arhitectura orientată pe servicii) desparte aplicația în mai multe servicii integrate. Arhitectura de microservicii, similară cu SOA, folosește mai multe servicii autonome care comunică prin API-uri.
Cum funcționează arhitectura de microservicii?
În arhitectura de microservicii, aplicațiile sunt divizate în unități mici, autonome, care comunică prin intermediul API-urilor. Beneficiile includ agilitate, flexibilitate, scalabilitate, independență tehnologică, reutilizarea serviciilor și ușurința implementării.

Ce este CRUD?
CRUD este un acronim pentru Create, Read, Update, Delete. Acestea sunt operațiunile de bază care pot fi efectuate asupra unei resurse într-un sistem bazat pe API.
Ce este caching-ul?
Memorarea în cache este o metodă de stocare a datelor (răspunsuri sau solicitări) pentru utilizarea ulterioară. Răspunsurile sunt de obicei stocate în cache pe client, deoarece poate reduce timpul de răspuns și consumul de bandă în cazul cererilor repetate.
La ce folosește @RequestMapping?
@RequestMapping este o adnotare din cadrul Spring, folosită pentru a mapa solicitările web către clasele sau metodele de gestionare corespunzătoare.
Ce face @PathVariable?
Adnotarea @PathVariable din Spring este utilizată pentru a extrage valorile variabilelor de șablon dintr-un URI și a le atribui variabilelor de metodă.
Definiți HttpMessageConverter.
HttpMesageConverter este folosit atunci când datele dintr-o solicitare HTTP trebuie convertite la un anumit tip necesar ca argument pentru o metodă de gestionare sau când valoarea returnată de o metodă de gestionare trebuie convertită într-un anumit format pentru a crea un răspuns HTTP.
Câteva instrumente folosite pentru testarea API-urilor sunt:
- Postman
- Rest Assured
- Rest Sharp
- Katalon
- ReadyAPI
- Apigee
Cuvinte finale
API-urile au cunoscut o creștere semnificativă a popularității odată cu dezvoltarea internetului. API-urile REST, în special, sunt preferate datorită ușurinței de dezvoltare și utilizare.
Dacă vă pregătiți pentru un interviu, este important să vă familiarizați cu aceste întrebări frecvente despre API-urile REST.
Pentru informații suplimentare, puteți cerceta modalitățile de a realiza scraping de site-uri web folosind API-ul Web Scraping de la tipstrick.ro.