40 Domande frequenti e risposte sull’intervista all’API REST [2023]

Un’API sta per Application Programming Interface. Funge da gateway per le applicazioni per accedere ad alcune risorse da altre applicazioni.

Il vantaggio dell’utilizzo di un’API è fornire l’accesso ad applicazioni di terze parti in modo che non possano accedere a tutti i dati della tua applicazione. Possono accedere solo ai dati che esponi tramite la tua API.

L’applicazione o un utente che desidera accedere ai dati è noto come client e l’applicazione che serve i dati è nota come server.

Le API sono ampiamente utilizzate oggi in ogni architettura software. Se stai facendo domanda per un ruolo di front-end, back-end, full-stack o ingegneria di rete, ti verranno poste molte domande sulle API.

Detto questo, esploriamo alcune delle domande di intervista più frequenti sulle API REST.

Sommario:

Cos’è il RIPOSO?

Risposta: REST è un progetto architettonico che definisce alcuni vincoli sul funzionamento delle API. Le API che seguono i principi di REST sono note come API RESTful. REST è l’acronimo di Representational State Transfer.

Non è un protocollo o uno standard; invece, è un’architettura che può essere utilizzata per implementare le API in vari modi.

Offre elevata flessibilità e libertà agli sviluppatori ed è per questo che è ampiamente utilizzato per sviluppare API. Ecco alcuni dei principi di un’architettura REST:

  • Separazione di client e server: in un’API RESTful, il client non dovrebbe influenzare il server in nessun altro modo diverso dalla richiesta di dati tramite un URI (Uniform Resource Identifier). Allo stesso modo, il server non dovrebbe modificare in alcun modo il contenuto del client.
  • Apolidia: quando vengono fatte due richieste separate, non si conoscono. In altre parole, le richieste sono senza stato e non mantengono uno stato. Se una richiesta viene soddisfatta, termina semplicemente. Ogni richiesta è isolata dalle altre richieste.
  • Architettura a più livelli: il client o il server non sa se la richiesta viene effettuata direttamente all’origine o a un’applicazione intermedia. A loro interessa solo la risposta alla richiesta.
  • Caching: i dati o la risposta possono essere memorizzati nella cache sul client e sul lato server per migliorare le prestazioni e la scalabilità. Se sono presenti richieste frequenti per una particolare risorsa, la risposta a tale richiesta può essere memorizzata nella cache e utilizzata quando necessario.

Quali sono alcune caratteristiche chiave di REST?

Risposta: Le principali caratteristiche o funzionalità di REST sono:

  • Flessibilità: puoi spostarti da un server all’altro e non cambierà nulla perché l’API invierà la stessa risposta per una particolare richiesta. Inoltre, puoi aggiungere tutti gli endpoint che desideri per diversi tipi di dati.
  • Scalabilità: la memorizzazione nella cache migliora la scalabilità grazie al salvataggio delle risposte per un uso successivo. Diminuisce il carico sul server e riduce anche la latenza.
  • Autorizzazione: con l’aiuto dell’intestazione di autorizzazione, è possibile specificare le credenziali che il server può utilizzare per autorizzare la richiesta.
  • Statelessness: questa è la caratteristica più importante di REST perché impedisce alle richieste di sapere cosa sta succedendo con altre richieste. Le richieste vengono isolate e terminate non appena soddisfatte.

Cosa sono le risorse in un’architettura REST?

Risposta: Le risorse sono entità su cui vengono eseguite diverse operazioni, come il recupero, l’aggiornamento o l’eliminazione. Sono gli elementi costitutivi di base dell’architettura REST.

Ad esempio, se consideri un negozio di e-commerce online, i prodotti, gli utenti e i metadati sono considerati risorse perché possono essere utilizzati. Le risorse possono essere trasferite a un’altra applicazione tramite API.

Menziona alcuni vantaggi e svantaggi di un’API REST.

Risposta: I vantaggi delle API REST sono i seguenti:

  • È semplice da implementare.
  • Le risorse possono essere facilmente gestite.
  • È scalabile grazie all’architettura client-server.
  • Supporta più tipi di supporti di trasferimento dati come XML e JSON.

I suoi svantaggi sono:

  • Non è possibile mantenere uno stato tra le richieste.
  • La vera fonte di origine della risorsa non può essere conosciuta a causa dell’architettura a più livelli.
  • Non va bene per domande o richieste complesse.

Definisci modello REST.

Risposta: un modello REST è un’utilità o un client attraverso il quale è possibile accedere alle API REST nel framework Spring. Fondamentalmente nasconde il codice boilerplate che potresti dover scrivere per richiedere una risorsa da un’API REST.

Cos’è RESTful?

Risposta: le API o i servizi RESTful sono interfacce che implementano lo stile architettonico REST (Representational State Transfer) e funzionano utilizzando protocolli come HTTP.

Cosa sono i servizi Web RESTful?

Risposta: i servizi Web RESTful sono progettati per funzionare al meglio sul Web. Representational State Transfer (REST) ​​è uno stile architettonico che specifica i vincoli, come l’interfaccia uniforme, l’architettura a strati e l’assenza di stato, se applicato a un servizio Web, induce proprietà desiderabili, come prestazioni e scalabilità, che consentono ai servizi di funzionare al meglio su la rete.

Come puoi testare i servizi Web RESTful?

Risposta: per testare un servizio Web RESTful, puoi utilizzare un client REST come Postman o Thunder Client e interrogare il servizio Web che desideri testare. Quindi, quando ricevi una risposta, comprendi la risposta; questa è la parte fondamentale.

Se desideri testare un’API complessa con molti endpoint, potresti dover suddividere i test ed eseguire unit test, test di integrazione, test delle prestazioni e test end-to-end.

Menzionare alcune funzionalità dei servizi Web RESTful.

Risposta: Alcune delle caratteristiche principali dei servizi Web RESTful sono:

  • Supporto per più tipi di media come JSON e XML.
  • Scalabilità
  • Isolamento di client e server
  • Flessibilità

Definisci classi di risorse radice RESTful.

Risposta: le classi di risorse root sono “semplici vecchi oggetti Java” (POJO) che sono annotati con @Path o hanno almeno un metodo annotato con @Path o un designatore di metodo di richiesta, come @GET, @POST, @PUT o @ELIMINARE.

Cos’è l’URI?

Risposta: URI sta per Uniform Resource Identifier. È una sequenza di caratteri utilizzata per individuare o identificare le risorse di un’API o di un servizio. Utilizza il nome o la posizione della risorsa per identificarla, ma non si basa su un particolare metodo o tecnica.

Cos’è l’apolidia in REST?

Risposta: l’assenza di stato si riferisce a un vincolo applicato a un’API in cui due richieste qualsiasi non possono sapere cosa sta succedendo l’una con l’altra. In altre parole, lo stato delle richieste non viene mantenuto. Se la richiesta viene soddisfatta, termina semplicemente dopo aver ricevuto una risposta.

Cos’è JAX-RS?

Risposta: JAX-RS è un’API Java che consente di sviluppare applicazioni in Java che utilizzano l’architettura REST. Questa API semplifica lo sviluppo di applicazioni REST in Java.

Quali sono le annotazioni chiave nell’API JAX-RS?

Risposta: le annotazioni in JAX-RS vengono utilizzate dagli sviluppatori per decorare le classi Java al fine di definire risorse e metodi che possono essere eseguiti su tali risorse. Alcune annotazioni chiave dell’API JAX-RS sono:

  • @GET: viene utilizzato per effettuare richieste GET in HTTP.
  • @POST: viene utilizzato per effettuare richieste POST in HTTP.
  • @Path: si riferisce al percorso relativo di una classe Java.
  • @QueryParam: si riferisce ai parametri di query dell’URI o dell’URL.

Quali sono alcune caratteristiche chiave dell’API JAX-RS?

Risposta: Le caratteristiche di JAX-RS sono:

  • Cache lato client
  • Cache lato server
  • Personalizzazione della stringa di query
  • Annotazioni di runtime

Come possono essere configurate le applicazioni JAX-RS?

Risposta: un’applicazione JAX-RS è costituita da almeno una classe di risorse impacchettata all’interno di un file WAR. L’URI di base da cui le risorse di un’applicazione rispondono alle richieste può essere impostato in due modi:

  • Utilizzo dell’annotazione @ApplicationPath in una sottoclasse di javax.ws.rs.core.Application impacchettata all’interno di WAR
  • Utilizzando il tag servlet-mapping all’interno del descrittore di distribuzione web.xml di WAR

Cosa sono JAX-WS e JAX-RS?

Risposta: JAX-WS è un’API dei servizi Web XML di Jakarta utilizzata per lo sviluppo di API mediante SOAP (Simple Object Access Protocol), un protocollo di messaggistica basato su XML.

D’altra parte, JAX-RS è un’API Java utilizzata per creare servizi Web utilizzando l’architettura REST.

Cosa sono i codici di stato HTTP?

Risposta: i codici di stato non sono altro che un modo per comunicare lo stato della risposta inviata dal server al client. Sono presenti nelle intestazioni di risposta inviate dal server.

Il client è in grado di capire se la richiesta è fallita o è stata soddisfatta o se c’è qualcosa di sbagliato nella risposta utilizzando i codici di stato.

Ecco alcuni codici di stato comuni di HTTP: –

  • 200 – Sta per parola chiave “OK”. Significa che la richiesta è stata soddisfatta e la risposta va bene.
  • 404 – Sta per “Non trovato”. Ciò significa che una risorsa non è presente sul server o che non esiste un endpoint.
  • 500 – Sta per “Errore interno del server”. Questo di solito accade quando il server non è in grado di generare la risposta corretta o c’è un errore che non viene generato esplicitamente.
  • 503 – Sta per “Servizio non disponibile”. Significa che attualmente il server non può elaborare alcuna richiesta, probabilmente perché è morto o non funziona a causa del sovraccarico della richiesta. Può verificarsi anche quando il server è in manutenzione.

Cosa sono i metodi HTTP?

Risposta: i metodi HTTP vengono utilizzati per eseguire un certo tipo di azione su una particolare risorsa di un’API. Ad esempio, se desideri recuperare un elenco di film da un’API di raccolta di film, puoi utilizzare il metodo GET fornito da HTTP. Se si desidera aggiornare i dati, è possibile utilizzare il metodo POST fornito da HTTP.

I metodi HTTP utilizzati di frequente sono i seguenti:

  • GET: le richieste che utilizzano GET devono solo recuperare i dati.
  • POST: aggiorna la risorsa inviando una nuova risorsa aggiornata al server.
  • DELETE: Cancella la risorsa specificata.
  • PATCH: Modifica parzialmente la risorsa.

Come funziona l’autenticazione di base HTTP?

Risposta: L’autenticazione è un processo per verificare l’autenticità di un client per mantenere la sicurezza dei dati. In HTTP, l’autenticazione funziona tramite un’intestazione di autorizzazione, che viene inviata dal client.

L’intestazione di autorizzazione è costituita dal nome utente/id e dalla password del client, che viene quindi verificata dal server e l’accesso è concesso.

Una cosa importante da notare qui è che quando si utilizza l’autenticazione HTTP, il canale attraverso il quale passano le credenziali deve essere crittografato e protetto.

Puoi proteggere il canale utilizzando il livello SSL, che è integrato in HTTPS. Pertanto, si consiglia di utilizzare HTTPS invece del semplice HTTP quando si ha a che fare con le credenziali.

Quali sono i componenti principali della richiesta HTTP?

Risposta: una richiesta HTTP è costituita dai seguenti componenti:

  • Riga di richiesta: è la prima riga di qualsiasi richiesta e consiste nel metodo HTTP, nel percorso o nell’endpoint e nel numero di versione HTTP.
  • Intestazioni: le intestazioni HTTP vengono utilizzate per fornire i metadati della richiesta.
  • Body (Facoltativo): Questo componente è presente solo per alcuni dei metodi di richiesta. Non è necessario per le richieste GET, ma è necessario per le richieste POST. È il messaggio effettivo della richiesta.

Quali sono i componenti principali della risposta HTTP?

Risposta: una risposta HTTP è costituita dai seguenti componenti:

  • Stato: si riferisce al codice di stato HTTP inviato dal server.
  • Intestazioni: proprio come le richieste, anche le risposte hanno le rispettive intestazioni, che forniscono informazioni utili sulla risposta.
  • Messaggio: questi sono i dati effettivi inviati dal server al client per richiedere una particolare risorsa.

Qual è la differenza tra REST e AJAX?

Risposta: AJAX è un client attraverso il quale è possibile accedere alle API RESTful. Viene utilizzato per inviare richieste asincrone tramite JavaScript.

REST, o Representational State Transfer, è un’architettura che può essere implementata per creare API RESTful. In breve, per inviare richieste HTTP, puoi utilizzare AJAX che funge da client, ma se desideri implementare API RESTful, devi utilizzare l’architettura REST.

Qual è la differenza tra SOAP e REST?

Risposta: Representational State Transfer, o REST, è un’architettura con vincoli minimi per creare API. SOAP, o Simple Object Access Protocol, è un protocollo con requisiti rigorosi per implementare un’API.

REST è più flessibile e facile da usare rispetto a SOAP. La messaggistica basata su XML viene utilizzata in SOAP, mentre in REST è possibile utilizzare molti tipi di trasferimento dati come JSON, XML, ecc. Rispetto a SOAP, REST è più leggero e veloce.

I servizi Web SOAP dispongono di sicurezza integrata, che è uno dei vantaggi dell’utilizzo di SOAP rispetto a REST, ma le funzionalità aggiunte lo rendono anche complesso e pesante da utilizzare.

Qual è la differenza tra PUT e POST?

Risposta: POST è un metodo di richiesta HTTP che invia alcuni dati al server. Se effettui più richieste POST per una particolare risorsa, potrebbero esserci effetti collaterali sui tuoi dati. Ad esempio, se desideri aggiungere un articolo a una raccolta, se effettui più richieste POST, più articoli verranno aggiunti alla raccolta portando ad articoli ridondanti.

PUT è un metodo di richiesta HTTP che invia dati al server per una particolare risorsa ma aggiorna i dati solo una volta. Se invii più richieste PUT per una particolare risorsa, non si verificheranno effetti collaterali e i dati verranno aggiunti solo una volta. In PUT, se la risorsa non esiste, ne creerà una nuova e, se esiste, aggiornerà quella esistente.

PUT è idempotente, mentre POST no.

Cos’è un carico utile?

Risposta: un payload in un’API REST è semplicemente il corpo della richiesta inviata dal client al server. Sono i dati che vuoi inviare al server e ottenere una risposta.

Qual è la dimensione massima del payload che può essere inviata nei metodi postali?

Risposta: non esiste un limite predefinito impostato dal protocollo HTTP stesso. Il limite può dipendere dal limite massimo del client o del server, qualunque sia il minimo.

Durante la creazione di URI, quali sono le best practice da seguire?

Risposta: Alcuni dei punti chiave che devi tenere a mente durante la progettazione degli URI sono:

  • Evita di usare estensioni di file
  • Sii coerente con tutti gli URI
  • Dividi gli URI in domini e sottodomini per diversi insiemi di risorse
  • Dovresti usare il trattino o il carattere di sottolineatura per separare le parole nelle frasi incorporate negli URI
  • Dovresti usare la barra per indicare una gerarchia di risorse
  • Codifica un URI utilizzando la codifica corretta
  • Prova a rendere l’URI leggibile dall’uomo

Cosa sono i metodi idempotenti?

Risposta: i metodi HTTP idempotenti hanno lo stesso effetto sul server nonostante l’invio di più richieste identiche. Ad esempio, se invii più richieste DELETE identiche per una particolare risorsa, la risorsa non cambierà a ogni richiesta; si aggiornerà come se fosse stata inviata una sola richiesta.

Alcuni dei metodi idempotenti includono:

  • METTERE
  • ELIMINARE
  • OTTENERE
  • TESTA
  • OPZIONI

Cos’è il postino?

Risposta: Postman è uno strumento di sviluppo API per sviluppare, modificare e testare le API. Fornisce molte funzionalità per creare e testare rapidamente le API senza la necessità di configurare un client.

Risposta: l’intestazione Cache-Control è costituita da istruzioni o direttive per configurare la memorizzazione nella cache nei browser e nei server. Indica al browser o al server cosa memorizzare nella cache e per quanto tempo dovrebbe essere memorizzato nella cache prima di essere richiesto tramite la richiesta di rete.

L’intestazione Cache-Control include le seguenti direttive:-

  • max-età
  • no-cache
  • privato
  • pubblico
  • nessun negozio
  • immutabile

Definire la messaggistica nei servizi Web RESTful.

Risposta: la messaggistica nei servizi Web RESTful si riferisce all’invio da parte del client di una richiesta HTTP al server, a cui il server risponde con una risposta HTTP. Questa comunicazione tra il client e il server viene definita messaggistica.

Qual è la differenza tra architettura monolitica, SOA e microservizi?

Risposta: In un’architettura monolitica, tutto è gestito in un unico posto. Il lato client, il server e il database sono tutti gestiti da un’unica posizione. Ecco perché è noto come monolitico perché la parola “monolite” si riferisce a un singolo blocco o pietra.

SOA è l’acronimo di Architettura orientata ai servizi. In questa architettura, diversi aspetti dell’applicazione sono gestiti da diversi servizi, anch’essi software. Quindi, è una combinazione di più moduli software di servizio. L’integrazione è la parte fondamentale di questa architettura.

L’architettura dei microservizi è simile a SOA, ma a differenza di SOA, ha più programmi software autonomi che dialogano tra loro utilizzando le API. A differenza dell’architettura monolitica, tutto qui è autonomo e, in una certa misura, indipendente.

Come funziona l’architettura dei microservizi?

Risposta: In un’architettura a microservizi, le applicazioni sono suddivise in sottounità più piccole, indipendenti l’una dall’altra e che funzionano in modo autonomo, ma comunicano tra loro tramite un insieme ben definito di API.

Alcuni vantaggi dell’architettura dei microservizi includono agilità, flessibilità, scalabilità, tecnologie indipendenti, servizi riutilizzabili e facilità di distribuzione.

Cos’è CRUD?

Risposta: CRUD sta per Crea, Leggi, Aggiorna, Elimina. Queste sono le operazioni che possono essere eseguite su una particolare risorsa. L’API che supporta tutte queste operazioni è nota come API CRUD. Queste sono le operazioni più basilari che possono essere eseguite da un’API su una risorsa.

Cos’è la memorizzazione nella cache?

Risposta: la memorizzazione nella cache è una tecnica per archiviare una risposta o una richiesta sul client o sul server affinché possa essere riutilizzata in seguito.

Le risposte vengono generalmente memorizzate nella cache sul client perché se il client effettua la stessa richiesta più volte in un breve intervallo di tempo, non ha senso richiedere nuovamente la risposta sulla rete e sprecare la larghezza di banda.

A cosa serve @RequestMapping?

Risposta: è un’annotazione nel framework Spring che viene utilizzata per mappare le richieste Web su classi e/o metodi del gestore specifici.

Cosa fa @PathVariable?

Risposta: L’annotazione @PathVariable nel framework Spring viene utilizzata per estrarre il valore delle variabili del modello e assegnarne il valore a una variabile di metodo.

Definisci HttpMessageConverter.

Risposta: quando una richiesta HTTP (o parti di essa) deve essere convertita in un tipo necessario come argomento per un metodo gestore o quando il valore restituito da un metodo gestore deve essere convertito in qualche modo per creare una risposta HTTP, HTTP vengono utilizzati convertitori di messaggi.

Risposta: Alcuni strumenti che possono aiutarti nel test delle API sono i seguenti:

  • Postino
  • Stia tranquillo
  • Riposa Sharp
  • Katalon
  • ReadyAPI
  • Apigee

Parole finali

Al giorno d’oggi, le API sono diventate estremamente popolari a causa dell’avvento di Internet. Un altro motivo per cui le API REST sono popolari è che sono facili da sviluppare e facili da usare.

Se ti stai preparando per un colloquio, considera le domande precedenti sulle API REST che potrebbero essere poste durante il colloquio.

Successivamente, puoi verificare come eseguire lo scraping di un sito Web utilizzando l’API Web Scraping di winadmin.it.