Introduzione all'API REST. Best practice per la progettazione dell'API REST Descrizione dell'API REST

Golovna / Contatti
La parte russa di Internet ha un gran numero di articoli dedicati ai servizi web basati su SOAP e XML-RPC, ma probabilmente non c'è nulla sull'intera architettura REST mondiale (o meno in generale).

Questo articolo descrive le basi di questa architettura, le sue possibilità e applicazioni.

Cos'è il RESTO?

REST (Representational state transfer) è uno stile di architettura software per sistemi distribuiti, come il World Wide Web, che viene utilizzato per invocare servizi web. Il termine REST è stato coniato più di 2000 volte da Roy Fielding, uno degli autori del protocollo HTTP. I sistemi che supportano REST sono chiamati sistemi RESTful.

L'opzione REST ha un'interfaccia molto semplice per la gestione delle informazioni senza alcuna elaborazione interna aggiuntiva. Ogni informazione è identificata in modo univoco da un identificatore globale, come un URL. Ogni URL, a suo modo, ha un formato strettamente correlato all'attività.

E ora, in modo più esplicito:

La presenza di ulteriori ricerche interne implica il trasferimento dei dati allo stesso modo dei dati stessi. Tobto. Non masterizziamo i dati in XML, come fanno SOAP e XML-RPC, non utilizziamo AMF, come fanno Flash, ecc. Forniamo solo i dati stessi.

Ogni informazione è identificata in modo univoco da un URL, il che significa che l'URL è la chiave primaria dell'informazione. Tobto. ad esempio, il terzo libro del libretto della polizia assomiglia a /libro/3 e la trentacinquesima pagina di questo libro assomiglia a /libro/3/pagina/35. Zvіdsi e esci dal formato delle attività. Inoltre, non importa in quale formato si trovano i dati all'indirizzo /libro/3/pagina/35: può essere HTML, una copia scansionata come file jpeg o un documento di Microsoft Word.

Il modo in cui le informazioni vengono gestite dal servizio è interamente basato sul protocollo di trasferimento. Il protocollo più avanzato è ovviamente HTTP. Quindi, per HTTP, l'azione sui dati è determinata dai seguenti metodi: GET (rimuovi), PUT (aggiungi, sostituisci), POST (aggiungi, modifica, elimina), DELETE (eliminato). Pertanto, le operazioni CRUD (Create-Read-Updtae-Delete) possono essere completate utilizzando qualsiasi numero di metodi, inclusi GET e POST.

L'asse è come appare sul calcio:

GET /book/ - recupera un elenco di tutti i libri esistenti
GET /book/3/ - ottieni il libro numero 3
PUT /book/ - aggiungi un libro (dati dell'utente)

DELETE /book/3 – visualizza il libro

AGGIUNTA IMPORTANTE: Questi sono chiamati modelli REST, che sono correlati ai metodi HTTP che devono essere interrotti. Più vicino a casa, diversi modelli esaminano POST e PUT in modi diversi. Tuttavia, il PUT non è assegnato per la creazione, la riproduzione e l'aggiornamento, mentre per il POST non è prevista alcuna assegnazione (L'operazione POST è molto generica e non è possibile attribuirle alcun significato specifico). Pertanto, il mio esempio sarà corretto in questa forma e come se intendessi POST e PUT in modo intercambiabile.

Ancora una volta, il POST può essere modificato contemporaneamente per tutte le modifiche:
POST /book/ – aggiungi un libro (sono richiesti i dati)
POST /book/3 – cambia libro (verranno richiesti i dati)
POST /book/3 – elimina il libro (il corpo sarà vuoto)

Ciò consente a volte di ignorare i momenti spiacevoli associati ai problemi PUT e DELETE.

Wiki REST per i servizi Web di tutti i giorni.

Come sapete, un servizio web è un componente aggiuntivo che opera sul World Wide Web e l'accesso ad esso avviene tramite il protocollo HTTP e lo scambio di informazioni avviene in un formato XML aggiuntivo. Pertanto, il formato dei dati trasferiti al corpo sarà sempre XML.

Per l'unità informativa pelle sono indicate 5 azioni. E a te stesso:

Ottenere informazioni/ (Indice)- Visualizza un elenco di tutti gli oggetti. Invocare il perdono, tutto qui. Inserisci solo i campi identificativo e nome oggetto, senza altri dati.

OTTIENI /info/(id) (Visualizzazione)- Recupera ulteriori informazioni sull'oggetto.

METTERE /info/ o altro PUBBLICARE /informazioni/ (Creare)- Sto creando un nuovo oggetto. I dati vengono trasmessi nel corpo senza alcuna codifica formale, utilizzando urlencode. In PHP il corpo può essere scritto in questo modo:

Funzione getBody() (
if (!isset($HTTP_RAW_POST_DATA))
$HTTP_RAW_POST_DATA = file_get_contents("php://input");
restituisce $HTTP_RAW_POST_DATA;
}

POST /info/(id) o altro PUT /info/(id) (Modificare)– modifica i dati con l'identificativo (id), eventualmente sostituendoli. I dati vengono trasmessi anche nel corpo della richiesta, ma nella modalità PUT c'è una sfumatura importante. A destra la richiesta POST trasmette la presenza di urldecoded-post-data. Tobto. Se non ristagni il codice, non viola lo standard. Qui, chi vogliono, non mostrano rispetto per lo standard, vikoristano come se fossero post-cambiamento.

ELIMINA /info/(id) (Eliminare)– cancella i dati dall'identificatore (id).

Vorrei sottolineare ancora una volta che nella nostra applicazione /info/ - può basarsi su qualsiasi altra informazione che può essere (e può essere) visualizzata nell'URL:

/data/4/otherdata/6/info/3/ … questo è tutto.

Cosa puoi guadagnare da questo concetto:

Apparentemente l'architettura REST è molto semplice in termini di sviluppo. Osservando il prompt, puoi capire cosa sta funzionando senza comprendere i formati (per SOAP, XML-RPC). I dati vengono trasferiti senza memorizzare dati aggiuntivi, quindi REST è considerato meno dispendioso in termini di risorse, poiché non richiede l'analisi per capire cosa bisogna fare e non richiede il trasferimento di dati da un formato all'altro.

Più pratico della stagnazione.

Il vantaggio principale dei servizi è che possono essere elaborati da un sistema, sia esso un sito web, un flash, un programma, ecc. frammenti di metodi per l'analisi delle richieste XML e vykonannya per HTTP saranno presenti nel prossimo futuro.

L'architettura REST consente di semplificare seriamente l'attività. Ciò è particolarmente vero in termini di funzionalità, ma viene descritto poco e, anche se non è possibile dare a qualcuno la possibilità di modificare le informazioni, sono necessarie anche l'autorizzazione e l'autenticazione. Questo può essere fatto facilmente utilizzando qualsiasi altro tipo di sessione o semplicemente l'autenticazione HTTP.

REST API (Representational State Transfer), o servizi web RESTful, che cos'è? REST tradotto dall'inglese come “trasmissione rappresentativa allo stan”. Questo è un metodo per garantire l'interazione tra i sistemi informatici su Internet. Servizi Web basati su REST che consentono ai sistemi che consumano, negano l'accesso alle risorse Web basate su testo e le gestiscono, vikoryst e operazioni unificate. Esplora altre forme di servizi Web che combinano la loro potenza con set di operazioni aggiuntive, come WSDL e SOAP.

API REST: cos'è? Capisco

Le risorse Web vengono identificate principalmente dal World Wide Web come documenti o file identificati dai relativi URL. La puzza di oggi può avere un significato più oscuro e astratto, che odora la pelle dell'oggetto e della realtà, che può essere identificata, nominata, indirizzata e raccolta in Merezhi. Il servizio Web API REST richiede una risposta in una risorsa URI, che può essere formattata in XML, HTML, JSON o qualsiasi altro formato. Puoi confermare che sono state apportate modifiche alla risorsa che viene salvata, nonché inviare messaggi ipertestuali ad altre risorse correlate e alle loro raccolte. L'utilizzo di HTTP, in quanto protocollo più esteso, si estende alle tipologie di operazioni disponibili indicate dai comandi PUT, DELETE, HTTP GET, POST.

I protocolli di vittoria senza regolamentazione diventeranno operazioni standard, i sistemi REST sono mirati ad alta produttività, affidabilità e disponibilità per aumentare il numero di componenti re-vikoristic che possono essere elaborati e che possono essere aggiornati senza interferire con il sistema. . I siti web REST sono spesso più semplici e meno importanti in stile SOAP (Simple Object Access Protocol), mentre le reti REST non hanno gli stessi costi di larghezza di banda, il che le rende più adatte ai siti web su Internet. Per l'approccio SOAP, è necessario scrivere o creare un programma server (per la gestione dei dati) e un programma client (per l'archiviazione dei dati).

Storia della tecnologia

Il termine “trasferimento rappresentativo nel paese” è stato introdotto e coniato nel 2000 da Roy Fielding nella sua tesi “Stili architettonici e progettazione di architetture software edge”. Abbiamo sviluppato lo stile architetturale di REST in parallelo con HTTP 1.1 1996-1999, basato sul progetto principale HTTP 1.0 1996. In uno sguardo retrospettivo allo sviluppo della tecnologia, Fielding ha affermato che durante il processo di standardizzazione HTTP, è probabile che le scelte progettuali vengano rubate da Internet. Questo è un processo più complicato nel quadro del processo che accetta proposte da chiunque sul tema di come la Svezia diventi il ​​centro di questa Galusa.

Alimentare i commenti di oltre 500 contributori, molti dei quali sono ingegneri dedicati con una vasta conoscenza. Sta a te spiegare tutto, dalla comprensione astratta delle interazioni web ai dettagli precisi della sintassi HTTP. Questo processo ha perfezionato questo modello in un insieme fondamentale di principi, principi e strutture che ora sono chiamati REST.

Vantaggi

Le peculiarità dello stile REST derivano dai seguenti principi architetturali:

  • Produttività: l'interazione delle componenti e delle autorità dominanti nella gestione delle misure di produttività ed efficacia.
  • Scalabilità per supportare il numero massimo di componenti, testando le API REST e le interazioni tra di loro.
  • Semplicità di un'unica interfaccia e API REST di autorizzazione.
  • Modifica di componenti per soddisfare esigenze specifiche (su programmi operativi).
  • Visibilità della comunicazione tra magazzino e agenti di servizio.
  • La possibilità di trasferire componenti che spostano il codice del programma con i dati.
  • Affidabilità - elevata resistenza ai guasti in caso di guasti nel magazzino, disconnessioni o dati.

La gamma di problemi tra i client è spiegata dal fatto che l'API REST consente di percepire l'implementazione dei componenti, modifica la complessità della semantica del connettore, promuove l'efficienza della regolazione della produttività e promuove la scalabilità dei componenti server puri iv. Le interconnessioni di sistemi compatti consentono agli intermediari - proxy, gateway e firewall di comunicare in punti diversi senza modificare le interfacce tra i componenti, il che consente loro di eseguire trasferimenti REST o trasferire la produttività Vati con l'aiuto di zagalny keshuvannya su larga scala. L'applicazione dell'API REST è dovuta al fatto che se l'interazione non avviene sotto forma di richieste, vengono utilizzati metodi e tipi di media standard per definire la semantica e lo scambio di informazioni e i risultati indicano esplicitamente il caching.

Confini formali e architettonici

Sei confini fondamentali caratterizzano un sistema RESTful. Definiscono le modalità in cui il server può elaborare e ricevere richieste dai client. Agendo nel quadro di queste interazioni, il servizio elimina gli elementi di potere non funzionale, come produttività, scala, semplicità, abbondanza, visibilità, mobilità e affidabilità. Se il servizio interrompe le connessioni necessarie, non può essere RESTful.

I primi confini vengono portati allo stile architettonico client-server. La riduzione dei problemi all'interfaccia client e dei problemi di salvataggio dei dati migliorerà la portabilità dell'interfaccia client su più piattaforme. Migliora inoltre la scalabilità semplificando i componenti del server. Forse la cosa più significativa per Merezha è che consente ai componenti di evolversi in modo indipendente, consentendo così la scalabilità di Internet verso ampi domini organizzativi.

Sicurezza

REST non fornisce alcun supporto di sicurezza richiesto. Ciò è particolarmente importante quando si progettano servizi web REST: è necessario tenere conto della sicurezza e della progettazione. I servizi Web REST utilizzano HTTP PUT e DELETE con operazioni CRUD. PUT e DELETE non sono supportati da molti browser e sono spesso collegati a server peer a causa della possibilità di compromettere la riservatezza. Se non esiste una configurazione corretta tra il server e il client, qualsiasi client di terze parti può creare una risorsa utilizzando il metodo PUT o utilizzando una risorsa DELETE diversa. Durante il periodo di sviluppo è stato possibile garantire la sicurezza dei servizi web e garantire che questi momenti siano protetti.

Elementi architettonici

Un aspetto chiave di REST è la natura dei suoi elementi di dati. Lo stile REST ha diversi concetti che descrivono il comportamento e la produzione di informazioni.

La risorsa è un oggetto (logico o fisico) disponibile su Internet. Potrebbe trattarsi di un documento archiviato nel file system del server o di una riga in una tabella di database. Il terminale koristuvach interagisce con la risorsa per raggiungere il segno del brano. Per progettare un sistema utilizzando REST, il progettista deve pensare agli oggetti di business come risorse e a quelli che possono essere indirizzati.

URI: identifica in modo univoco una risorsa. Questo parametro modifica la risorsa indirizzo e potrebbe cambiare. Le risorse vengono scambiate con programmi supportati dal protocollo come HTTP.

Podannya - Diventerò una risorsa in questo momento. Il client restituisce la richiesta alla risorsa seguita dall'URI. La risorsa può essere visualizzata in uno o più formati trasmessi, come XML, HTML, JSON, RSS, REST API java. Questi formati possono essere gestiti con un meccanismo aggiuntivo per il miglioramento dei contenuti.

Diritto: consente al programma di annullare la transizione da uno stato all'altro. Ogni risorsa può avere connessioni ad altre risorse. Il presente potrebbe confermare l’entrata in vigore della prossima transizione. Un programma ben collegato consente all'utente di aprire l'interfaccia in modo indipendente.

Connettore

La connessione è un'interfaccia astratta che media le connessioni tra i componenti. I frammenti dell'interazione REST non vengono eliminati, il connettore non è responsabile del salvataggio delle informazioni sulla rete. Pertanto, le connessioni tra i componenti possono essere create in parallelo.

Il client e il server sono i principali connettori REST. Il client avvia la richiesta e il server la elabora.

I contanti sono un altro tipo di roz'em. La memorizzazione nella cache può essere implementata su client, server e altri livelli. Ciò modifica l'ora di recupero e la vicinanza dei limiti.

Componenti

I componenti vengono assemblati utilizzando metodi di risorse rigorosamente definiti, che creano le condizioni per lo stoccaggio dello stabilimento di produzione e trasferimento.

User-Agent – ​​una connessione client vikoryst per l'avvio di una richiesta.

Server origine: connettore del server Vikorist per l'alimentazione.

Il proxy è un intermediario utilizzato dal lato client per incapsulare l'interfaccia con altri servizi. Comprende anche la traduzione dei dati e la protezione.

Un gateway è un intermediario installato sul server per garantire l'incapsulamento dell'interfaccia da parte di altri servizi.

Prospettive di sviluppo

Cibo di nuova rilevanza: REST API: cos'è per le attuali tecnologie Internet? REST è la base della moderna architettura web, che viene sviluppata analizzando alcuni stili esistenti e introducendovi nuove aggiunte.

Obiettivi dell'API REST: che cos'è? L'obiettivo è combinare stili distinti con un insieme coordinato di confini per ridurre al minimo la diafonia e massimizzare l'evoluzione indipendente dei componenti per raggiungere la scalabilità. Il prezzo della nuova architettura ipermediale. Con l'avvento di smartphone, tablet e gadget, c'è una misura di scala.

L'API RESTful può essere creata per servizi di terze parti. È possibile utilizzare programmi robot unilaterali con un back-end. Ci sono una serie di punti chiave che devi conoscere prima di progettare l'interfaccia.

URL e condizioni

Il principio chiave di REST è dividere la tua API in risorse logiche. La gestione di queste risorse viene effettuata utilizzando richieste HTTP aggiuntive con un metodo standard: GET, POST, PUT, PATCH, DELETE.

La risorsa deve essere descritta dal nome della molteplicità. Le azioni sulle risorse vengono definite utilizzando la strategia CRUD e sono supportate dai metodi HTTP nel seguente ordine:

  • GET /api/users – recupera l'elenco dei client;
  • GET /api/users/123 - seleziona l'utente specificato;
  • POST /api/users – crea un nuovo utente;
  • PUT /api/users/123 - aggiorna tutti i dettagli dell'account manager specificato;
  • PATCH /api/users/123 – aggiorna parzialmente i dati del koristuvach;
  • DELETE /api/users/123 - vidaliti koristuvach.

Poiché una risorsa esiste solo nel contesto di un'altra risorsa, l'URL può essere combinato:

  • GET /api/posts/9/comments - scorre l'elenco dei commenti fino alla voce n. 9;
  • GET /api/posts/9/comments/3 - sposta il commento n. 3 al post n. 9.

Se l'azione su un oggetto è un'operazione CRUD, può essere utilizzata come risorsa di archiviazione:

  • POST /api/posts/9/like - indica il record n. 9 come somiglianze;
  • DELETE /api/posts/9/like - rimuovi l'icona "qualificato" dal post n. 9.

La creazione e il rinnovamento delle risorse possono dare una svolta alla risorsa

I metodi POST, PUT o PATCH possono modificare i campi delle risorse che non erano inclusi prima dell'inserimento (ad esempio ID, data di creazione o data di aggiornamento). Per non sovraccaricare l'utente con l'API, è necessario effettuare un'altra richiesta per rimuovere i dati aggiornati, tali metodi possono invertirli.

Filtra, ordina e cerca

Qualsiasi parametro di query HTTP può essere utilizzato nei wiki per chiarire la query o ordinare i dati.

  • GET /api/users?state=active – elenco degli utenti dell'account attivi;
  • GET /api/tasks?state=open&sort=priority,-created_at - un elenco di attività non create, ordinate per priorità e data di creazione (a partire da una nuova attività).

Navigazione dei manifesti

Se è necessario aggiungere informazioni sulla navigazione laterale a un elenco di destinazioni, è possibile utilizzare rapidamente l'intestazione del collegamento HTTP anziché aggiungere wrapper di dati.

Testata di testata:

Collegamento: ; rel="successivo", ; rel="precedente", ; rel="primo", ; rel="ultimo"

Possibili valori rel:

  • successivo – la pagina dei risultati sta arrivando;
  • prev – lato anteriore dei risultati;
  • prima – prima pagina dei risultati;
  • last – l'ultimo lato dei risultati.

È importante comprendere questi significati piuttosto che costruire URL diversi in modo che a volte la navigazione laterale possa basarsi su regole complesse, piuttosto che su una semplice ricerca di pagine.

Riassegnazione al metodo HTTP

Per l'utilizzo con alcuni server o client che non supportano metodi HTTP diversi da GET e POST, potrebbe essere necessaria la loro emulazione. I valori per il metodo vengono passati nell'intestazione X-HTTP-Method-Override e il valore stesso è etichettato come metodo POST. La richiesta GET non è da biasimare per cambiare il campo server!

Stato HTTP di Kodi

  • 200 OK – risposta a una richiesta riuscita GET, PUT, PATCH o DELETE.
  • 201 Creato: la risposta POST indicherà il risultato della creazione di un nuovo oggetto. La risposta può anche essere accompagnata da un'intestazione Location, che indica l'URL della risorsa.
  • 204 No Content – ​​indica il completamento con successo di un comando che non cambia nulla (ad esempio DELETE).
  • 404 Not Found - l'oggetto richiesto non è stato trovato.
  • 500 Errore interno del server: errore sul server.

In caso di acquisti, la tipologia potrebbe contenere informazioni aggiuntive per gli acquirenti, se possibile.

Gli attori dicono:

"Tse API, per quale richiesta HTTP del wikirista

OTTIENI, METTI, PUBBLICAі ELIMINARE ".

Chi ha detto la stessa cosa:

“Fare riferimento all'URI aggiuntivo per l'allocazione delle risorse”

Altri gridano ad alta voce:

Alla fine puoi dire:

“In linea di principio è semplice API, che vikorista HTTP Giusto!"

Gli atti di queste persone hanno confermato la grazia,

Deyaki chastkovo verni,

ma non ha alcun significato,

Bo puzza tutti non capiscono il punto.

Per rendere possibile lo sviluppo di un'API RESTful,

Secondo il primo

Cos'è il RESTO?

Cos'è il RESTO?

RESTO è:

    Virazno non HTTP

    Chi nessun protocollo

    Nessuna specifica

Perché ci sono così tante API REST?

E ancora...

REST è uno stile di architettura.

Oh, wow... qual è questo stile di architettura?

Stile architettonico

Architettura di Bazhana

È solo l’architettura più una serie di confini che si accumulano nell’architettura, che crea l’architettura definitiva.

Lo zastosovuyuchi e le interconnessioni si basano sull'architettura del basilico, ottimizzata per le cascate sotterranee del vikoristan.

REST sta per trasferimento dati

Ciò è stato registrato da Roy Fielding nella sua tesi di dottorato nel 2000, descrivendo l'attuale architettura web come un'astrazione.

Il nome della bula si riferisce alla dichiarazione di Wiklikati su come affrontare il buon sviluppo degli integratori web.

Roy ha descritto REST in un semplice esempio:

Diamo un'occhiata alle pagine web come una macchina virtuale.

Il lato della pelle rappresenta il corpo:

1. In primo luogo, il koristuvach rimuove il primo campo dall'aspetto del campo indice.

2. Quindi koristuvach passa attraverso il programma, selezionando il messaggio (qui il messaggio viene inviato a lato)

3. Il risultato del trasferimento dell'offensiva al campo di Koristuvachevi.

REST non è HTTP

Naturalmente, già nel 2000, la rete funzionava già su HTTP e Roy e i suoi colleghi ingegneri ci lavoravano molto.

Tuttavia, REST non specifica dettagli specifici di implementazione del sistema o sintassi del protocollo.

È del tutto possibile costruire un'architettura RESTful su protocolli compatibili con HTTP.

Ad esempio, CoAP (Cooperative Access Protocol) è un protocollo RESTful per la distribuzione di dispositivi (Internet of Things) e viene utilizzato per allocare risorse minime sia sul dispositivo che contemporaneamente.

Allora qual è lo scopo di usare REST?

Il World Wide Web si basa sull'architettura REST.

Pertanto, se crei un'API non RESTful, comune su Internet, stai creando un sistema non ottimale. Non ottimale per l'architettura ottimizzata.

È importante notare che alcune API non RESTful potrebbero non essere ottimali per un'architettura edge, ma non ottimali per altri problemi. Ad esempio, i moderni programmi front-end possono soddisfare esigenze molto specifiche e esiste un numero crescente di librerie di raccolta dati, come GraphQL o Falcor.

Quindi, quante API RESTful ci sono?

L'API è RESTful se opera costantemente entro i limiti REST.

REST significa 6 limiti per ottenere l'ottimizzazione del sistema desiderata:

1. Client-server

Questo scambio si basa sul principio degli interessi.

Ciò consente ai componenti di svilupparsi in modo indipendente. Quando creiamo la nostra API, agisce come un server che serve un gran numero di client.

2. Senza ingombro

Le connessioni tra il client e il server sono fluide. Ciò significa che è responsabilità del cliente accedere al server con tutte le informazioni necessarie per completare la transazione.

Il vantaggio principale di questo scambio è che il sistema può scalare più rapidamente, poiché il server non ha bisogno di risparmiare tempo al client tra una richiesta e l'altra. La necessità di ricordare le informazioni sul sistema del cliente libera le risorse del server, in modo che sia possibile servire più clienti contemporaneamente.

La misura più efficace è quella che non vikorizza la misura.

Se creiamo la nostra API, non è colpa nostra ignorare la cache.

4. Interfaccia corretta

Per garantire un efficiente caching della cache, i componenti devono essere in grado di comunicare attraverso un'unica interfaccia. Con un'unica interfaccia, le informazioni desiderate possono essere trasmesse in un formato standard.

4.1. Identificazione delle risorse

Ciò significa che qualsiasi informazione che può essere nominata può essere una risorsa (immagine, documento o un insieme di altre risorse)

4.2. Manipolazione delle risorse attraverso manifestazioni

La risorsa può essere rappresentata in diversi modi.

Ad esempio, HTML, XML, JSON o invia un file JPEG.

Ciò significa che i clienti interagiscono con le risorse attraverso le loro manifestazioni, il che riduce notevolmente la comprensione astratta delle risorse nelle loro interazioni.

4.3 In terzo luogo, le informazioni autodescritte

Ciò significa che la risorsa può fornire descrizioni alla richiesta segnalata e il server può fornire descrizioni sul sito. Pertanto, le intestazioni HTTP e i codici di risposta sono le principali implementazioni di questa regola.

4.4. Hypermedia può diventare un motore e diventare un programma

Ciò significa in realtà che il programma è dotato di poteri che consentono ai client di accedere alle risorse tramite l'iperpotere.

Come puoi vedere, molte regole possono essere implementate nel protocollo HTTP. Pertanto, se l'API Vikorist utilizza HTTP correttamente, questa è una grande opportunità per diventare RESTful.

5. Sistema bagatorio

In un sistema di rete ricco, gli intermediari, come i server proxy, possono essere posizionati tra il client e il server, utilizzando un'interfaccia di rete monomodale.

Uno dei vantaggi del sistema ricco è che gli intermediari possono intercettare il traffico client-server per scopi musicali/ad esempio per la memorizzazione nella cache.

6. Codice Vimoga

Questo scambio semplice consente ai client di installare programmi per il login sul lato client. Il miglior esempio di ciò sono i componenti aggiuntivi dell'interfaccia JavaScript. Questo potrebbe essere immediatamente ovvio per noi, ma agli albori di Internet c'era un concetto che si stava evolvendo, e questa era una parte fondamentale dell'architettura di Internet.

Quindi, come creare un'API REST?

HTTP correttamente protetto

Se desideri un'API RESTful, vikorizza il protocollo RESTful. Per Internet la prima scelta è il protocollo HTTP. Crea un'API per un corretto utilizzo HTTP.

Creare un'unica interfaccia

Allinea i tuoi concetti con le risorse e assegna identificatori univoci a ciascuno di essi. Il modo più semplice sarebbe utilizzare un servizio di database per gli stranieri. Per tale servizio possiamo citare due risorse; Koristuvachiv e koristuvachiv (risorsa di raccolta). Queste risorse possono essere identificate dall'URI /users e dall'URI /user/(id) della tua API.

Metti in mostra i tuoi superpoteri API

Ricorda l'architettura REST

L'aspetto meno impegnativo della creazione di un'API RESTful dipende da quanto sia importante comprendere Internet e la sua architettura sottostante. Possiamo accelerare questa ottimizzazione oppure ignorarla.

Se avete problemi alimentari richiediamo il ns

Grazie per aver letto il mio post.
Il contraccolpo e i pensieri fluttuano sempre nella sezione commenti.

Ciao, cari lettori! Prima di iniziare a leggere questo articolo, vorrei descrivere gli obiettivi di questa creazione e rivelazione che mi hanno spinto a scriverlo.

In uno dei progetti della nostra azienda, Vinyl, era necessario progettare un'applicazione server in stile REST. Fin dall'inizio ci siamo chiesti cosa fare con un compito semplice e, a questo scopo, estrarre le informazioni più potenti.

Una volta avviato il processo di sviluppo dell'architettura e di portare i servizi REST in uno stile unificato, io e i nostri colleghi abbiamo iniziato ad avere questioni contrastanti e punti di vista diversi sull'implementazione di questo o quell'aspetto. Qui ci siamo resi conto che è necessario aprire Google e andare in aiuto della mente collettiva, apprendere le migliori pratiche da evitare quando si progettano programmi RESTful.

Questo articolo interesserà quelle persone che potrebbero già avere una chiara comprensione di come lavorare con i componenti aggiuntivi web (e possibilmente con i servizi REST), ma non richiederà il consolidamento e la standardizzazione delle proprie conoscenze.

Viznachennya

Per cominciare, devi capire cos'è REST. Wikipedia dà questa risposta nutrizionale. RIPOSO (Trasferimento di Stato rappresentativo- “Trasferimento alla manifestazione”) è uno stile architettonico di interazione tra i componenti di un'appendice divisa all'interno di un confine. REST fornisce un insieme conveniente di connessioni da considerare quando si progetta un sistema ipermediale distribuito.

Con parole mie, ho spiegato il concetto di REST come "un insieme di raccomandazioni che consente di unificare l'interazione tra applicazioni client e server".
In questo articolo cercherò di informarti su queste “raccomandazioni” che ti aiuteranno a progettare e creare servizi REST secondo le pratiche generalmente accettate.

Comprendi anche che questo è un servizio REST. Ho definito il servizio REST come “il punto di interazione tra il programma client e il server”. Nella terminologia Java, questo è un servlet, il cui client invia la richiesta.

Problemi

Prima di iniziare a descrivere le regole, vorrei trasmettere l’idea che REST non è uno standard, perché non esistono regole uniformi da seguire. Ciò significa che non c’è ancora una maggiore comprensione di quelle soluzioni che possono risolvere al meglio l’una o l’altra situazione. È molto comune leggere quali metodi HTTP utilizzare e quale codice HTTP utilizzare in ogni situazione specifica.

Nome di Servizio

Per iniziare, è necessario selezionare un nome per il servizio REST. Sotto il nome del servizio, rispetto il tuo percorso nell'URI della richiesta. Per esempio, http://my-site.by/api/rest/service/nome. Per scegliere un nome dobbiamo capire quali sono le “risorse” nell’architettura REST.

Invio alla risorsa

Nella terminologia REST, può essere una risorsa: un documento HTML, immagini, informazioni su un client specifico, ecc. Poiché una risorsa è un oggetto reale, è facile da visualizzare in un formato standard, ad esempio XML o JSON. Quindi il server può inviare questa risorsa utilizzando il formato selezionato e il client può lavorare con la risorsa selezionata dal server.

Esempio inviato alla risorsa "profilo" in formato JSON:

    "id" :1,

    "nome": "Mahesh",

    "accedi": "manesh"

REST non impone alcuna restrizione esplicita sul formato che verrà utilizzato per rappresentare le risorse e ci sono alcune regole che devono essere seguite quando si sviluppa un formato che verrà utilizzato per rappresentare le risorse:

  • Il client e il server sono responsabili della comprensione e della capacità di lavorare con il formato selezionato.
  • La risorsa può essere descritta completamente in qualsiasi formato scelto, indipendentemente dalla complessità della risorsa.
  • Il formato può trasmettere la possibilità di creare connessioni tra risorse.

Un esempio di invio alla risorsa “richiesta” e connessione con il “profilo” della risorsa:

    ID: 11254,

    valuta: "EUR" ,

    importo: 100

    profilo: (

    ID: 11,

    uri: "http://MyService/Profiles/11"

Come puoi vedere, non è obbligatorio duplicare l'intera struttura di una risorsa assegnata a un'altra risorsa. Natomist può essere inviato vikoristovvat in modo più intelligente a un'altra risorsa.

Zvernennya alla risorsa

La risorsa skin può essere identificata in modo univoco da un identificatore permanente. "Permanente" significa che l'identificatore non cambia durante l'ora di scambio dati e quando cambia verrà assegnato alla risorsa. Se alla risorsa viene assegnato un identificatore diverso, il server è tenuto a notificarlo al client, che indicherà quindi la data di invio al nuovo indirizzo. Una risorsa è identificata in modo univoco da un URL. Ciò significa che l'URL è la chiave primaria per l'elemento dati. Totto, ad esempio, ha guardato un altro libro tratto dal libro Police Matima /libri/2 , e il 41esimo lato di questo libro è /libri/2/pagine/41 . Zvіdsi e esci dal formato delle attività. Inoltre non ha alcuna importanza il formato in cui sono contenuti i dati dietro l'indirizzo /libri/2/pagine/41 – Può essere HTML, una copia scansionata di un file jpeg o un documento Word.

Si consiglia di selezionare più nomi di risorse quando si assegna un nome a un servizio REST. Questo approccio consente di aggiungere nuovi servizi REST senza espandere i nomi di quelli esistenti. Ad esempio, il servizio /libri forniscici un elenco di tutti i tuoi libri, /libri/3 passare alle informazioni sul 3° libro e sul servizio /libri/3/pagine gira tutti i lati del terzo libro.

Per i servizi che creano azioni specifiche su una risorsa, esistono due approcci per inserire le azioni: nel nome del servizio o nei suoi parametri. Per esempio, /libri/3/pulito o /libri/3?pulito . Io preferisco la prima opzione, perché tali servizi utilizzano spesso metodi POST che non supportano il passaggio di parametri all'URL, il che rende il servizio, a mio avviso, poco leggibile. A causa dell'importanza del tipo di azione nel nome del servizio, espanderemo maggiormente il nostro servizio, per quanto possibile dipende dal tipo di metodo HTTP.

Inoltre, non è consigliabile utilizzare nomi che includano un tag a sinistra e descrivano l'attività del servizio di magazzino (come si consiglia di fare quando si denominano i metodi Java). Ad esempio, zamista /getAllCars un modo migliore per guadagnare soldi /automobili . Poiché il metodo non può essere descritto in una parola, è necessario stabilire un unico stile di separatori, che io chiamo vikory '-', che è l'approccio più popolare. Per esempio, /auto/3/lattina-venduta.

Maggiori dettagli sulla progettazione dei nomi dei servizi REST possono essere letti

Metodo HTTP

REST ha 4 metodi HTTP principali: GET, POST, PUT, DELETE. Molto spesso, la skin dei metodi servirà fino alla fine dell'attività con CRUD ( C reagire, R morire, tu data, D elete – “creazione, lettura, aggiornamento, visualizzazione”).
POST – crea, GET – leggi, PUT – aggiorna, DELETE – cancella.

AGGIUNTA IMPORTANTE: Questi sono chiamati modelli REST e sono correlati ai metodi HTTP che devono essere implementati. Più vicino a casa, diversi modelli esaminano POST e PUT in modi diversi. Tuttavia, le assegnazioni PUT per la creazione, la sostituzione o l'aggiornamento non vengono assegnate per il POST. Pertanto, i codici POST e PUT possono essere scambiati. Nella maggior parte dei casi, POST viene utilizzato per la creazione e PUT viene utilizzato per la modifica e spiegherò il motivo tra poco.

Fornirò una serie di esempi di vari metodi di interazione con le risorse.

  • OTTIENI /libri/- Seleziona un elenco di tutti i libri. Invocare il perdono, tutto qui. Inserisci solo i campi identificativo e nome oggetto, senza altri dati.
  • OTTIENI /libri/(id)- Rimozione di ulteriori informazioni sul libro.
  • POST /libri/- Sto creando un nuovo libro. I dati vengono trasmessi in una nota.
    PUT /libri/(id)– modifica i dati relativi al libro con identificativo (id), eventualmente sostituendoli. I dati vengono trasmessi anche su richiesta.
  • OPZIONI /libri- Seleziona l'elenco delle operazioni supportate per la risorsa assegnata (praticamente non vicorizzata)
  • ELIMINA /libri/(id)– cancella i dati dall'identificatore (id).

Sicurezza e idempotenza

Ti aiuterà anche a scegliere un metodo HTTP per conoscere la sicurezza e l'idempotenza di questi metodi.

Una richiesta imprudente non è una richiesta che non modifica lo stato del programma.

Una richiesta idempotente non è una richiesta, il cui effetto è una derivazione a risposta multipla è più antico dell'effetto di una derivazione usa e getta.

A giudicare da questa tabella, la richiesta GET non modifica lo stato della risorsa che è stagnante. Le istruzioni PUT e DELETE possono modificare lo stato della risorsa, ma possono essere ripetute con calma, poiché non vi è alcun motivo per cui l'istruzione precedente sia terminata. In linea di principio, è logico: se ripeti ripetutamente una particolare risorsa e la sostituisci con una determinata risorsa, il risultato sarà un'ulteriore sostituzione della risorsa. Ale POST è scritto, come si vede nella tabella, non sicuro ed indempotente. Non solo cambia la risorsa, ma anche l'effetto che si ripete spesso è molto variabile. Questo è invece rappresentato dall'operazione di aggiunta di nuovi elementi al DB: la finestra è stata scritta X volte, e il DB ha ricevuto X elementi.

Sottolineerò anche perché le richieste GET non sono responsabili della modifica dello stato della risorsa. Le richieste GET possono essere memorizzate nella cache, ad esempio, su un server proxy. In questo caso, la richiesta potrebbe non raggiungere il server tramite il programma, ma perché il server proxy restituisce le informazioni dalla cache.

Codice HTTP

Lo standard HTTP descrive oltre 70 codici di stato. In buona forma, vorrei quelli principali.

  • 200 – OK – richiesta riuscita. Se il cliente ha richiesto dei dati, questi appariranno nell'intestazione e/o nelle informazioni.
  • 201 – OK – come risultato di una missione riuscita, è stata creata una nuova risorsa.
  • 204 – OK – la risorsa è stata acquisita con successo.
  • 304 – Non modificato – il client può accedere ai dati dalla cache.
  • 400 – Bad Request – la richiesta non è valida o la richiesta non può essere elaborata.
  • 401 – Non autorizzato – la richiesta indica l'autenticazione del cliente.
  • 403 – Forbidden – il server ha richiesto l'autorizzazione, ma non gli è consentito elaborarla e l'accesso è bloccato.
  • 404 – Non trovato – risorsa non trovata.
  • 500 – Errore interno del server – Gli sviluppatori API sono colpevoli di evitare tali bug.

Questi benefici possono essere catturati nel blocco globale, impegnati o altrimenti respinti dalla filiale.

Maggiore è l'insieme di codici che vikorizzeremo, più intelligente sarà l'API che creeremo. Tuttavia, tieni presente che i browser elaborano questi codici in modo diverso. Ad esempio, alcuni browser che rifiutano il codice di risposta 307 visualizzano immediatamente un reindirizzamento e altri consentono di gestire questa situazione e salvare l'azione. Prima di tutto è importante capire come funziona lato client!

Intestazioni

  • Tipo di contenuto- Formato richiesto;
  • Accettare- Elenco dei formati di trasmissione.

Parametri per la ricerca delle risorse

Per semplificare la selezione dei servizi responsabili dell'elaborazione di qualsiasi informazione, e renderli anche più produttivi, è necessario capire come inserire i parametri per l'ordinamento, il filtraggio, ecc. foresta di campi e impaginazione.

Filtrazione

Creare un parametro univoco per il campo cutaneo per la filtrazione. Ciò consente di limitare la quantità di informazioni fornite, ottimizzando il tempo di elaborazione della richiesta.

Ad esempio, per visualizzare tutti i libri rossi, è necessario scrivere:

OTTIENI /libri?colore=rosso

Sortuvannya

L'ordinamento viene implementato in modo simile al filtraggio. Ad esempio, per visualizzare tutti i libri ordinati per data di pubblicazione e per titolo per crescita, è necessario inserire la seguente voce:

OTTIENI /libri?sort=-anno,+nome

Impaginazione

Per supportare la possibilità di accedere ad un elenco di risorse che possono apparire sulla stessa pagina del programma, l'API REST utilizza la funzionalità di impaginazione. Viene implementato utilizzando i parametri SQL a noi noti: limit e offset. Per esempio:

OTTIENI /libri?offset=10&limit=5

Inoltre, è buona norma visualizzare un messaggio sulla prima, sul retro, sulla prima pagina e sulle restanti pagine nell'intestazione del collegamento. Per esempio:

Collegamento: ; rel="successivo",
; rel="ultimo",
; rel="primo",
; rel="precedente"

Seleziona i campi per la risorsa

Per un servizio manuale, per risparmiare traffico, è possibile aggiungere la possibilità di personalizzare il formato di visualizzazione dei dati. È possibile selezionare i campi per la risorsa, che potrebbero aggiornare il servizio REST. Ad esempio, se devi rimuovere sia gli ID dei libri che i relativi colori, devi inserire la voce successiva:

OTTIENI /libri?fields=id,colore

Ti salverò

Uno dei motivi per lo scambio di servizi RESTful è che devono far risparmiare tempo al cliente, al fine di rimuovere le richieste.

Un esempio del servizio che non fa risparmiare:
Richiesta1:
Richiesta2: OTTIENI http://MyService/Persons/2 HTTP/1.1

La pelle di queste bevande può sviluppare problemi cutanei indipendentemente dalle altre.

Un esempio di servizio che fa risparmiare:
Richiesta1: OTTIENI http://MyService/Persons/1 HTTP/1.1
Richiesta2: OTTIENI http://MyService/NextPerson HTTP/1.1

Per elaborare un'altra richiesta, il server deve "ricordare" l'ID della persona rimanente richiesta dal client. Tobto. Il server ha il compito di “memorizzare” la propria linea di produzione, altrimenti un'altra fornitura potrebbe causare problemi. Quando si progetta un servizio non è necessario risparmiare energia, lasciando una priorità bassa.

Vantaggi del servizio, che non fa risparmiare sui costi:

  • il servizio richiede le consumazioni indipendentemente l'una dall'altra;
  • l'architettura del servizio dirà addio;
  • Non è necessario alcuno sforzo aggiuntivo per implementare i servizi utilizzando il protocollo HTTP, che inoltre non salva dati.

Servizio insufficiente che non fa risparmiare denaro:

  • Il cliente stesso è responsabile del trasferimento del servizio necessario al contesto al servizio.

Versione

È buona norma supportare la versione dell'API REST. Ciò consente di espandere facilmente l'API senza obbligare i clienti che già la utilizzano ad apportare modifiche.
Diversi approcci per implementare il controllo delle versioni:

  • Per ulteriore assistenza, accetta l'intestazione. In questo caso, la versione API è specificata in Accetta - Accetta:testo/v2+json
  • Zwikiristannyam URI. In questo approccio, la versione dell'API è specificata direttamente nell'URI: http://localhost/api/v2/books
  • Wiki con intestazione personalizzata. Puoi utilizzare l'intestazione power, che è anche responsabile del passaggio della versione API - Versione API: v2
  • Viene chiesto il parametro Vikoristannya. Puoi utilizzare il parametro di trasferimento della versione API: /libri?v=2

Ciascuno dei metodi presentati ha il diritto di dormire, ognuno ha i suoi pro e contro. Tuttavia, spetta a te decidere quale metodo di implementazione del controllo della versione si adatta al tuo progetto.

Documentazione

Per configurare manualmente i nostri servizi REST, è necessario creare una documentazione valida ed esauriente. Per questo puoi usare diversi strumenti, ad esempio Mashape o Apiary, ma io consiglio di usare Swagger.

Swagger è una tecnologia che consente di documentare i servizi REST. Swagger incoraggia la programmazione e i framework senza volto. Inoltre Swagger fornisce un'interfaccia utente per la revisione della documentazione.

È possibile visualizzare le informazioni del rapporto su Swagger a un prezzo.

Archivio

Keshuvannya

Inoltre, per velocizzare le richieste al database e aumentare la velocità dei dati per i nostri servizi REST, si consiglia di impostare il meccanismo di caching. La memorizzazione nella cache può essere regolata sia a livello di server che, inoltre, a seconda della situazione.

Keshuvannyam può utilizzare le seguenti intestazioni HTTP:

  • Data: data e ora di creazione della risorsa.
  • Ultima modifica: data e ora dell'ultima modifica alla risorsa sul server.
  • Cache-Control è un'intestazione HTTP 1.1 utilizzata per controllare le cache.
  • Età: l'ora successiva al momento dell'acquisizione rimanente della risorsa, l'intestazione può essere aggiunta dal componente intermedio (tra il client e il server) (ad esempio un server proxy)

© 2024 androidas.ru - Tutto su Android