Tutorial sui servizi web RESTful: esempio di API REST
โก Riepilogo intelligente
I servizi Web RESTful offrono un approccio leggero e senza stato per consentire alle applicazioni di scambiare dati tramite HTTP utilizzando verbi standard. Espongono le risorse attraverso un approccio pulito. URLConsente una comunicazione scalabile e indipendente dalla piattaforma tra client distribuiti, server, dispositivi mobili e moderne piattaforme cloud e di intelligenza artificiale.
Che cosa sono i servizi Web restful?
Servizi Web riposanti Un servizio web RESTful รจ un servizio leggero, manutenibile e scalabile, basato sull'architettura REST. Un servizio web RESTful espone un'API della tua applicazione al client chiamante in modo sicuro, uniforme e senza stato. Il client chiamante puรฒ quindi eseguire operazioni predefinite utilizzando il servizio RESTful. Il protocollo sottostante per REST รจ HTTP e REST รจ l'acronimo di REpresentational State Transfer.
In parole semplici, REST definisce uno standard per la creazione, la lettura, l'aggiornamento e la cancellazione di risorse, come documenti, immagini o record di database, tramite il web. Poichรฉ si basa sul protocollo HTTP standard, praticamente qualsiasi linguaggio di programmazione o dispositivo puรฒ utilizzare un servizio RESTful senza bisogno di strumenti specifici.
Perchรฉ utilizzare i servizi web RESTful?
Prima di addentrarci nei dettagli tecnici, รจ utile capire perchรฉ REST sia diventato cosรฌ popolare. I servizi web RESTful hanno acquisito importanza per i seguenti motivi:
1. Lingue e ambienti eterogenei โ Questa รจ una delle ragioni fondamentali, che รจ la stessa che abbiamo visto per SOAP come pure.
- Consente alle applicazioni web, sviluppate con diversi linguaggi di programmazione, di comunicare tra loro.
- Con l'aiuto dei servizi Restful, queste applicazioni web possono risiedere in ambienti diversi; alcune potrebbero essere su Windowse altri potrebbero essere su Linux.
In definitiva, a prescindere dall'ambiente, il risultato dovrebbe essere sempre lo stesso: le applicazioni devono essere in grado di comunicare tra loro. I servizi web RESTful offrono questa flessibilitร alle applicazioni sviluppate con diversi linguaggi di programmazione e piattaforme.
L'immagine sottostante fornisce un esempio di un'applicazione web che ha il requisito di comunicare con altre applicazioni come Facebook, Twitter e Google.
Se un'applicazione client dovesse interagire con siti come Facebook e Twitter, gli sviluppatori avrebbero normalmente bisogno di sapere su quale linguaggio e piattaforma sono stati realizzati tali siti. In base a ciรฒ, potrebbero scrivere il codice di interfaccia, ma questo approccio potrebbe rivelarsi un incubo in termini di manutenzione.
Invece Facebook, Twitter e Google Espongono le loro funzionalitร sotto forma di servizi web RESTful. Ciรฒ consente a qualsiasi applicazione client di richiamare questi servizi web tramite REST, indipendentemente dalla tecnologia sottostante.
2. L'evento dei Dispositivi โ Al giorno dโoggi bisogna sistemare tutto Mobile dispositivi, che si tratti di un telefono cellulare, un notebook o persino un sistema per auto.
Immaginate la quantitร di lavoro necessaria per programmare applicazioni su questi dispositivi affinchรฉ possano comunicare con le normali applicazioni web. Anche in questo caso, le API RESTful semplificano il lavoro perchรฉ, come accennato al punto uno, non รจ necessario conoscere il livello sottostante del dispositivo.
3. L'evento della nuvola โ Tutto si sta spostando sul cloud. Le applicazioni si stanno lentamente spostando verso sistemi basati sul cloud come Azure or Amazon. Azure and Amazon Offrono numerose API basate sull'architettura RESTful. Pertanto, le applicazioni devono ora essere sviluppate in modo da essere compatibili con il cloud. Poichรฉ tutte le architetture basate sul cloud funzionano secondo il principio REST, รจ logico che i servizi web siano programmati su un'architettura basata su REST per sfruttare al meglio i servizi cloud.
Elementi chiave RESTful
I servizi web REST hanno fatto molta strada dalla loro nascita. Nel 2002, il Web Consortium ha pubblicato la definizione di servizi web WSDL e SOAP. Questo ha costituito lo standard per l'implementazione dei servizi web.
Nel 2004, il consorzio Web ha anche pubblicato la definizione di uno standard aggiuntivo chiamato RESTful. Negli ultimi anni, questo standard รจ diventato molto popolare ed รจ ora utilizzato da molti dei siti web piรน famosi al mondo, tra cui Facebook e Twitter.
REST รจ un modo per accedere alle risorse che si trovano in un ambiente specifico. Ad esempio, si potrebbe avere un server che ospita documenti, immagini o video importanti. Tutti questi sono esempi di risorse. Se un client, come un browser web, necessita di una di queste risorse, deve inviare una richiesta al server. I servizi REST definiscono un modo standard per accedere a queste risorse.
Gli elementi chiave di un'implementazione RESTful sono i seguenti:
- Risorse โ Il primo elemento chiave รจ la risorsa stessa. Supponiamo che un'applicazione web su un server abbia i record di diversi dipendenti. Supponiamo che URL dell'applicazione web รจ https://demo.guru99.comOra, per accedere a una risorsa di record di dipendente tramite servizi REST, รจ possibile emettere il comando https://demo.guru99.com/employee/1Questo comando indica al server web di fornire i dettagli del dipendente il cui numero di matricola รจ 1.
- Richiedi verbi โ Questi descrivono cosa si desidera fare con la risorsa. Un browser invia un verbo GET per indicare all'endpoint che desidera ottenere i dati. Tuttavia, sono disponibili molti altri verbi, tra cui POST, PUT e DELETE. Quindi, nel caso dell'esempio https://demo.guru99.com/employee/1Il browser web sta effettivamente emettendo un verbo GET perchรฉ desidera ottenere i dettagli del record del dipendente.
- Richiedi intestazioni โ Si tratta di istruzioni aggiuntive inviate insieme alla richiesta. Possono definire il tipo di risposta richiesta o i dettagli relativi all'autorizzazione.
- Ente di richiesta โ Questi sono i dati inviati con la richiesta. I dati vengono normalmente inviati nel corpo della richiesta quando si effettua una richiesta POST al servizio web REST. In una chiamata POST, il client comunica al servizio web REST che desidera aggiungere una risorsa al server. Pertanto, il corpo della richiesta conterrร i dettagli della risorsa da aggiungere.
- Corpo di risposta โ Questo รจ il corpo principale della risposta. Quindi, nel nostro esempio di API RESTful, se dovessimo interrogare il server web tramite la richiesta https://demo.guru99.com/employee/1Il server web potrebbe restituire un documento XML contenente tutti i dettagli del dipendente nel corpo della risposta.
- Codici di stato della risposta โ Questi sono i codici generici restituiti insieme alla risposta dal server web. Un esempio รจ il codice 200, che viene normalmente restituito quando non si verifica alcun errore durante la risposta al client.
Metodi riposanti
Il diagramma seguente mostra la maggior parte dei verbi (POST, GET, PUT e DELETE) e un esempio di API REST che illustra il loro significato.
Supponiamo di avere un servizio web RESTful definito nella posizione https://demo.guru99.com/employeeQuando il client effettua una richiesta a questo servizio web, puรฒ specificare uno qualsiasi dei verbi HTTP standard: GET, POST, DELETE e PUT. Di seguito viene illustrato cosa accadrebbe se il client inviasse i rispettivi verbi.
- POST โ Questo verrebbe utilizzato per creare un nuovo dipendente tramite il servizio web RESTful.
- GET โ Questo verrebbe utilizzato per ottenere un elenco di tutti i dipendenti che utilizzano il servizio web RESTful.
- PUT โ Questo verrebbe utilizzato per aggiornare tutti i dipendenti tramite il servizio web RESTful.
- DELETE โ Questo verrebbe utilizzato per eliminare tutti i dipendenti che utilizzano il servizio RESTful.
Ora consideriamo la situazione dal punto di vista di un singolo record. Ipotizziamo che esista un record di dipendente con il numero di dipendente 1. Le seguenti azioni avrebbero i rispettivi significati.
- POST โ Questa opzione non รจ applicabile, poichรฉ stiamo recuperando i dati del dipendente 1, che รจ giร stato creato.
- GET โ Questo verrebbe utilizzato per ottenere i dettagli del dipendente con il numero 1 tramite il servizio web RESTful.
- PUT โ Questo verrebbe utilizzato per aggiornare i dettagli del dipendente con il numero 1 tramite il servizio web RESTful.
- DELETE โ Questa funzione viene utilizzata per eliminare i dati del dipendente con il numero 1.
Riposante Architectura
Un'applicazione o un'architettura considerata RESTful o in stile REST presenta le seguenti caratteristiche.
1. Stato e funzionalitร sono suddivisi in risorse distribuite โ Ciรฒ significa che ogni risorsa dovrebbe essere accessibile tramite i normali comandi HTTP GET, POST, PUT o DELETE. Quindi, se qualcuno volesse scaricare un file da un server, dovrebbe essere in grado di inviare una richiesta GET e ottenere il file. Se volesse caricare un file sul server, dovrebbe essere in grado di inviare una richiesta POST o PUT. Infine, se volesse eliminare un file dal server, potrebbe inviare una richiesta DELETE.
2. L'architettura รจ client/server, stateless, a livelli e supporta la memorizzazione nella cache.
- Client-server รจ l'architettura tipica in cui il server puรฒ essere il server web che ospita l'applicazione e il client puรฒ essere semplice come un browser web.
- Senza stato significa che lo stato dell'applicazione non viene mantenuto in REST. Ad esempio, se elimini una risorsa da un server utilizzando il comando DELETE, non puoi aspettarti che le informazioni sull'eliminazione vengano passate alla richiesta successiva.
Per assicurarsi che la risorsa venga eliminata, รจ necessario inviare una richiesta GET. La richiesta GET serve innanzitutto a recuperare tutte le risorse presenti sul server, dopodichรฉ รจ necessario verificare se la risorsa รจ stata effettivamente eliminata.
Principi e vincoli RESTFul
L'architettura REST si basa su alcune caratteristiche, che vengono illustrate di seguito. Qualsiasi servizio web RESTful deve rispettare le caratteristiche elencate di seguito per poter essere definito tale. Queste caratteristiche sono anche note come principi di progettazione che devono essere seguiti quando si lavora con servizi basati su RESTful.
Questo รจ il requisito fondamentale di un'architettura basata su REST. Significa che il server disporrร di un servizio web RESTful che fornirร al client le funzionalitร richieste. Il client invia una richiesta al servizio web sul server. Il server, a sua volta, puรฒ rifiutare la richiesta oppure accettarla e fornire una risposta adeguata al client.
- apolide
Il concetto di "stateless" (senza stato) implica che spetti al client garantire che tutte le informazioni necessarie vengano fornite al server. Ciรฒ รจ indispensabile affinchรฉ il server possa elaborare la risposta in modo appropriato. Il server non deve conservare alcun tipo di informazione tra una richiesta e l'altra del client. Si tratta di una sequenza domanda-risposta molto semplice e indipendente. Il client pone una domanda e il server risponde in modo appropriato. Quando il client pone un'altra domanda, il server non ricorderร lo scenario domanda-risposta precedente e dovrร rispondere alla nuova domanda in modo indipendente.
- Cache
Il concetto di cache aiuta a risolvere il problema dell'assenza di stato descritto nel punto precedente. Poichรฉ ogni richiesta client-server รจ indipendente, a volte il client potrebbe richiedere nuovamente al server la stessa informazione, anche se l'ha giร richiesta in passato. Questa richiesta verrร inviata al server, che fornirร una risposta, aumentando il traffico di rete. La cache รจ un concetto implementato sul client per memorizzare le richieste giร inviate al server. Pertanto, se il client invia la stessa richiesta, invece di rivolgersi direttamente al server, accederร alla cache per recuperare le informazioni necessarie. Ciรฒ riduce il traffico di rete in entrata e in uscita tra client e server.
- Sistema a strati
Il concetto di sistema a livelli prevede che qualsiasi livello aggiuntivo, come ad esempio un livello middleware, possa essere inserito tra il client e il server che ospita il servizio web RESTful. (Il livello middleware รจ dove viene implementata tutta la logica di business. Puรฒ trattarsi di un servizio aggiuntivo con cui il client interagisce prima di effettuare una chiamata al servizio web.) Tuttavia, l'introduzione di questo livello deve essere trasparente, in modo da non interferire con l'interazione tra client e server.
- Interfaccia/Conforme uniformetract
Questa รจ la tecnica di base su cui si fonda il funzionamento dei servizi web RESTful. RESTful opera essenzialmente a livello HTTP e utilizza i verbi chiave elencati di seguito per interagire con le risorse sul server.
- POST โ Per creare una risorsa sul server.
- GET โ Per recuperare una risorsa dal server.
- PUT โ Per modificare lo stato di una risorsa o per aggiornarla.
- CANCELLA โ Per rimuovere o eliminare una risorsa dal server.
REST vs SOAP: Differenze chiave
Gli sviluppatori spesso mettono a confronto REST e SOAP nella progettazione di un servizio web. Entrambi consentono alle applicazioni distribuite di comunicare, ma differiscono nettamente nella filosofia. REST รจ uno stile architetturale che utilizza semplici verbi HTTP e formati leggeri come JSON, mentre SOAP รจ un protocollo rigoroso che si basa su buste XML e una convenzione formaletract. La tabella seguente riassume le distinzioni piรน importanti.
| Aspetto | REST | SOAP |
|---|---|---|
| Tipo | Archistile tecnico | Protocollo rigoroso |
| Formato dei dati | JSON, XML, testo semplice, HTML | Solo XML |
| Trasporti | Solo HTTP | HTTP, SMTP, TCP e altri |
| Regione / Stato | apolide | Apolide o con stato |
| Cookie di prestazione | Piรน veloce e piรน leggero | Piรน pesante a causa del sovraccarico XML |
| migliori per | API web, mobile e pubbliche | Applicazioni aziendali che richiedono una sicurezza rigorosa |
In pratica, REST รจ la scelta predefinita per le API web e mobile pubbliche perchรฉ รจ piรน veloce e piรน facile da utilizzare, mentre SOAP rimane utile per i sistemi aziendali che richiedono sicurezza integrata e controllo formale.tracts.
Crea il tuo primo servizio Web Restful in ASP.NET
In questo tutorial sulle API REST, impareremo come creare un servizio web RESTful in ASP.NET.
I servizi web possono essere creati in diversi linguaggi di programmazione e si possono utilizzare numerosi ambienti di sviluppo integrati per creare servizi basati su REST.
In questo esempio di API RESTful, creeremo la nostra applicazione REST in .NET utilizzando Visual Studio. Avremo un servizio web RESTful che opererร sul set di dati riportato di seguito.
L'insieme di dati riportato di seguito rappresenta un esempio di API REST di un'azienda che espone i tutorial disponibili in base al Tutorialid.
| Tutorialid | NomeTutorial |
|---|---|
| 0 | Array |
| 1 | code |
| 2 | Stacks |
Nel nostro esempio di tutorial sulle API REST, implementeremo i verbi RESTful descritti di seguito.
- OTTIENI il tutorial โ Quando un client richiama questa API RESTful, gli verrร fornito l'intero set di tutorial disponibili dal servizio web.
- OTTIENI Tutorial/Tutorialid โ Quando un client richiama questa API RESTful, gli verrร assegnato il nome del tutorial in base al Tutorialid inviato dal client.
- POST Tutorial/Nome tutorial โ Quando un client richiama questa API RESTful, invia una richiesta per inserire un nome di tutorial. Il servizio web aggiungerร quindi il nome del tutorial inviato alla raccolta.
- ELIMINA Tutorial/Tutorialid โ Quando un client richiama questa API RESTful, invia una richiesta di eliminazione di un Tutorialname in base al Tutorialid. Il servizio web eliminerร quindi il nome del tutorial inviato dalla raccolta.
Seguiamo i passaggi seguenti per creare il nostro primo servizio web RESTful, che esegue l'implementazione descritta in precedenza.
Come creare il tuo primo servizio Web riposante
Passo 1) Crea un nuovo progetto.
Il primo passo รจ creare un file vuoto Asp.Net Applicazione web. Da Visual Studio 2013, fare clic sull'opzione di menu File->Nuovo progetto.
Una volta cliccato sull'opzione "Nuovo progetto", Visual Studio visualizzerร un'altra finestra di dialogo per la scelta del tipo di progetto e l'inserimento dei dettagli necessari. Questo aspetto verrร spiegato nel passaggio successivo.
Passo 2) Inserisci il nome del progetto e la sua ubicazione.
- Assicurati di scegliere prima il C# Modello web dell'applicazione web ASP.NET. Il progetto deve essere di questo tipo per poter creare un progetto di servizi web. Scegliendo questa opzione, Visual Studio eseguirร i passaggi necessari per aggiungere i file richiesti per qualsiasi applicazione basata sul web.
- Assegna un nome al tuo progetto, che nel nostro caso รจ "Webservice.REST".
- Assicurati quindi di specificare la posizione in cui verranno archiviati i file del progetto.
Una volta completata l'operazione, il file di progetto creato sarร visibile in Esplora soluzioni di Visual Studio 2013.
Passo 3) Creare il file del servizio Web.
Il passo successivo consiste nel creare il file del servizio web che conterrร il servizio web RESTful.
- Innanzitutto, fai clic con il pulsante destro del mouse sul file di progetto, come mostrato di seguito.
- In questa fase,
- Fai clic con il pulsante destro del mouse sul file di progetto.
- Seleziona l'opzione "Aggiungi -> Nuovo elemento".
Nella finestra di dialogo che appare, รจ necessario eseguire le seguenti operazioni.
- Scegli l'opzione Servizio WCF (abilitato per Ajax). La scelta di un file di questo tipo fa sรฌ che Visual Studio aggiunga del codice di base che ti aiuta a creare un servizio web RESTful. WCF sta per Windows Communication FoundationWCF รจ una libreria che permette ad applicazioni di varie piattaforme (o della stessa piattaforma) di comunicare tramite diversi protocolli come TCP, HTTP e HTTPS. Ajax รจ asincrono. JavaCopione e XML. AJAX consente alle pagine web di essere aggiornate in modo asincrono scambiando piccole quantitร di dati con il server dietro le quinte.
- Successivamente, assegna un nome al servizio, che nel nostro caso รจ TutorialService.
- Infine, fai clic sul pulsante Aggiungi per aggiungere il servizio alla soluzione.
Passo 4) Effettua una configurazione.
Il passo successivo consiste nell'apportare una modifica alla configurazione per consentire a questo progetto di funzionare con i servizi web RESTful. Ciรฒ richiede una modifica al file chiamato web.configQuesto file appare nella stessa finestra del file di progetto del servizio web. Il file Web.config contiene tutte le configurazioni necessarie al corretto funzionamento dell'applicazione web. La modifica apportata consente all'applicazione di inviare e ricevere dati come un servizio web RESTful puro.
- Fai clic sul file Web.config per aprire il codice.
- Trova la linea .
- Cambia la riga in .
Passo 5) Aggiungi il nostro codice per l'implementazione.
Il passo successivo consiste nell'aggiungere il nostro codice di implementazione. Tutto il codice seguente deve essere scritto nel file TutorialService.svc.
- Il primo passo consiste nell'aggiungere il codice per rappresentare i nostri dati, che verranno utilizzati nel programma. Avremo quindi un elenco di variabili stringa con i valori "Array", "Quee" e "Stack". Queste rappresenteranno i nomi dei tutorial disponibili tramite il nostro servizio di hosting web.
namespace Webservice.REST { [ServiceContract(Namespace = "")] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] public class TutorialService { private static List<String> lst = new List<String> (new String[] {"Arrays","Queues","Stacks"});
Passo 6) Definire il codice per il nostro metodo GET.
Successivamente, definiremo il codice per il nostro metodo GET. Anche questo codice risiederร nello stesso file TutorialService.svc. Tale codice verrร eseguito ogni volta che richiameremo il servizio dal nostro browser.
Il metodo descritto di seguito verrร utilizzato per realizzare lo scenario riportato di seguito.
- Se un utente desidera un elenco di tutti i tutorial disponibili, allora dovrร scrivere il codice seguente per raggiungere questo obiettivo.
[WebGet(UriTemplate = "/Tutorial")] public String GetAllTutorial() { int count = lst.Count; String TutorialList = ""; for (int i = 0; i < count; i++) TutorialList = TutorialList + lst[i] + ","; return TutorialList; }
Code Spiegazione:-
- La prima riga di codice รจ la piรน importante. Viene utilizzata per definire come possiamo chiamare questo metodo tramite un URL. Quindi, se il collegamento al nostro servizio web รจ http://localhost:52645/TutorialService.svc e aggiungiamo '/Tutorial' al URL, come in http://localhost:52645/TutorialService.svc/Tutorial, verrร richiamato il codice sopra riportato. L'attributo 'WebGet' รจ un parametro che consente a questo metodo di essere un metodo RESTful in modo che possa essere richiamato tramite il verbo GET.
- Questa sezione di codice viene utilizzata per esaminare il nostro elenco di stringhe nella variabile 'lst' e restituirle tutte al programma chiamante.
Passo 7) Restituisce l'output.
Il codice seguente garantisce che, se viene effettuata una chiamata GET al servizio Tutorial con un ID Tutorial, venga restituito il nome del tutorial corrispondente in base all'ID Tutorial.
[WebGet(UriTemplate = "/Tutorial/{Tutorialid}")] public String GetTutorialbyID(String Tutorialid) { int pid; Int32.TryParse(Tutorialid, out pid); return lst[pid]; }
Code Spiegazione:-
- La prima riga di codice รจ la piรน importante. Definisce come possiamo chiamare questo metodo tramite un URL. Quindi, se il collegamento al nostro servizio web รจ http://localhost:52645/TutorialService.svc e aggiungiamo '/Tutorial/{Tutorialid}' al URL, saremmo in grado di chiamare il servizio web come http://localhost:52645/TutorialService.svc/Tutorial/1, ad esempio. Il servizio web restituirebbe quindi il nome del tutorial con ID Tutorial pari a 1.
- Questa sezione di codice viene utilizzata per restituire il nome del tutorial che ha l'ID del tutorial passato al metodo web.
- Di default, ciรฒ che bisogna ricordare รจ che qualsiasi cosa venga passata al URL nel browser รจ una stringa.
- Bisogna perรฒ ricordare che l'indice della nostra lista deve essere un numero intero, quindi aggiungiamo il codice necessario per convertire prima il Tutorialid in un numero intero.
- Lo utilizziamo quindi per accedere alla posizione dell'indice nella nostra lista e restituire il valore corrispondente al programma chiamante.
Passo 8) Scrivi il codice per il metodo POST.
Il passo successivo consiste nello scrivere il codice per il nostro metodo POST. Questo metodo verrร richiamato ogni volta che vorremo aggiungere un valore stringa al nostro elenco di tutorial tramite il metodo POST. Ad esempio, se volessimo aggiungere il tutorial "Software Testing", dovremmo utilizzare il metodo POST.
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "/Tutorial/{str}")] public void AddTutorial(String str) { lst.Add(str); }
Code Spiegazione:-
- La prima riga รจ l'attributo 'WebInvoke', che รจ stato associato al nostro metodo. Questo permette di richiamare il metodo tramite una chiamata POST. Gli attributi RequestFormat e ResponseFormat devono essere specificati come JSON, poichรฉ quando si inviano valori a un servizio web RESTful, i valori devono essere in questo formato.
- La seconda riga di codice viene utilizzata per aggiungere il valore stringa passato tramite la chiamata POST al nostro elenco esistente di stringhe dei tutorial.
Passo 9) Aggiungere un metodo per gestire l'operazione DELETE.
Infine, aggiungeremo il nostro metodo per gestire l'operazione DELETE. Questo metodo verrร richiamato ogni volta che vorremo eliminare un valore stringa esistente dal nostro elenco di tutorial tramite il metodo DELETE.
[WebInvoke(Method = "DELETE", RequestFormat = WebMessageFormat.Json, UriTemplate = "/Tutorial/{Tutorialid}", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)] public void DeleteTutorial(String Tutorialid) { int pid; Int32.TryParse(Tutorialid, out pid); lst.RemoveAt(pid); }
Code Spiegazione:-
- La prima riga รจ l'attributo 'WebInvoke', che รจ stato associato al nostro metodo. Questo permette di richiamare il metodo tramite la chiamata DELETE. Gli attributi RequestFormat e ResponseFormat devono essere specificati come JSON, poichรฉ i valori devono essere in questo formato. Si noti che il parametro Method รจ impostato su "DELETE". Ciรฒ significa che ogni volta che viene utilizzato il comando DELETE, questo metodo verrร richiamato.
- La seconda riga di codice viene utilizzata per prendere il Tutorialid inviato tramite la chiamata DELETE e successivamente eliminare quell'id dalla nostra lista. (IL Int32 La funzione nel codice viene utilizzata per convertire l'ID del tutorial da una variabile stringa a un numero intero.
Esecuzione del tuo primo servizio web Restful
Ora che abbiamo creato l'intero servizio web nella sezione precedente, vediamo come possiamo eseguire il servizio Tutorial in modo che possa essere richiamato da qualsiasi client.
Per avviare il servizio web, seguire i passaggi seguenti.
Passo 1) Fai clic con il pulsante destro del mouse sul file di progetto โ Webservice.REST.
Passo 2) Seleziona l'opzione di menu "Imposta come progetto di avvio". In questo modo, il progetto verrร eseguito quando Visual Studio avvia l'intera soluzione.
Passo 3) Il passo successivo รจ eseguire il progetto stesso. A seconda del browser predefinito installato sul sistema, il nome del browser appropriato apparirร accanto al pulsante Esegui in Visual Studio. Nel nostro caso, abbiamo Google Chrome che si presenta. Basta cliccare su questo pulsante.
Produzione:-
Quando il progetto viene eseguito, รจ possibile accedere alla sezione TutorialService.svc/Tutorial e visualizzare l'output riportato di seguito.
Nell'output sopra,
- Come si puรฒ vedere, il browser richiama il verbo 'GET' ed esegue il metodo 'GetAllTutorial' nel servizio web. Questo modulo viene utilizzato per visualizzare tutti i tutorial esposti dal nostro servizio web.
Testare il tuo primo servizio web Restful
Nella sezione precedente abbiamo giร visto come utilizzare il browser per eseguire il verbo 'GET' e richiamare 'GetAllTutorial'.
- Utilizziamo ora il browser per eseguire il seguente scenario d'uso.
GET Tutorial/Tutorialid โ Quando un client richiama questa API RESTful, gli verrร assegnato il nome del tutorial in base al Tutorialid inviato dal client.
Nel tuo browser, aggiungi la stringa /1 dopo la parola Tutorial nel URLSe premi il tasto Invio, otterrai l'output seguente.
Ora vedrai l'output di "Queues", che corrisponde al numero 1 nel nostro elenco di stringhe dei tutorial. Ciรฒ significa che il metodo 'GetTutorialbyID' viene ora richiamato dal nostro servizio web. Mostra anche che il valore 1 viene passato correttamente tramite il browser al nostro servizio web e al nostro metodo, ed รจ per questo che otteniamo il valore corrispondente corretto di "Queues" nel browser.
- Successivamente, utilizziamo il nostro servizio web eseguendo lo scenario seguente. Per fare ciรฒ, รจ necessario installare lo strumento chiamato Fiddler, che รจ uno strumento scaricabile gratuitamente.
POST Tutorial/Tutorialname โ Quando un client richiama questa API RESTful, invia una richiesta per inserire un Tutorialname. Il servizio web aggiungerร quindi il nome del tutorial inviato alla raccolta.
Corri il Fiddler Utilizzare lo strumento ed eseguire i passaggi seguenti.
- Vai alla sezione di composizione. Questa sezione serve per creare richieste che possono essere inviate a qualsiasi applicazione web.
- Assicurati che il tipo di richiesta sia "POST" e corretto URL viene colpito, il che nel nostro caso dovrebbe essere http://localhost:52645/TutorialService.svc/Tutorial.
- Assicurati che l'attributo Content-Type sia impostato su application/json. Ricorda che il metodo di richiesta POST del nostro servizio web accetta solo dati in formato JSON, quindi dobbiamo assicurarci che questo sia specificato quando inviamo una richiesta alla nostra applicazione.
- Infine, dobbiamo inserire i nostri dati. Ricorda che il nostro metodo POST accetta un parametro chiamato 'str'. Quindi, qui specifichiamo che vogliamo aggiungere un valore chiamato "Trees" alla nostra raccolta di nomi di tutorial e ci assicuriamo che sia associato al nome della variabile 'str'.
Infine, basta fare clic sul pulsante Esegui in FiddlerQuesto invierร una richiesta al servizio web per inviare tramite POST i dati "Alberi" al nostro servizio web.
Ora, quando navighiamo al Tutorial URL Per visualizzare tutte le stringhe presenti nel nostro elenco di tutorial, noterete che รจ presente anche il valore "Trees". Questo dimostra che la richiesta POST al servizio web รจ stata eseguita correttamente e che รจ stata aggiunta con successo al nostro elenco di tutorial.
- Successivamente, consumiamo il nostro servizio web eseguendo lo scenario seguente. Per questo, dobbiamo anche utilizzare il Fiddler strumento.
ELIMINA Tutorial/Tutorialid โ Quando un client richiama questa API RESTful, invia una richiesta di eliminazione di un Tutorialname in base al Tutorialid. Il servizio web eliminerร quindi il Tutorialname inviato dalla raccolta.
Corri il Fiddler Utilizzare lo strumento ed eseguire i passaggi seguenti.
- Vai alla sezione di composizione. Questa sezione serve per creare richieste che possono essere inviate a qualsiasi applicazione web.
- Assicurati che il tipo di richiesta sia "DELETE" e corretto URL viene colpito, il che nel nostro caso dovrebbe essere http://localhost:52645/TutorialService.svc/Tutorial. Assicurarsi che l'ID utilizzato per eliminare una stringa nell'elenco venga inviato tramite URL come parametro. Nel nostro esempio REST, stiamo inviando 1, quindi questo eliminerร il 2nd elemento della nostra collezione, che รจ "Code".
Infine, basta fare clic sul pulsante Esegui in FiddlerQuesto invierร una richiesta al servizio web per ELIMINARE i dati "Code" dal nostro servizio web.
Ora, quando navighiamo al Tutorial URL Per visualizzare tutte le stringhe nell'elenco del nostro tutorial, noterete che il valore di "Queues" non รจ piรน presente.
Ciรฒ dimostra che la richiesta DELETE al servizio web รจ stata eseguita correttamente. L'elemento all'indice numero 1 nel nostro elenco di stringhe del tutorial รจ stato eliminato con successo.
Pratiche migliori dell'API RESTful
Creare un'API REST funzionante รจ solo il primo passo; realizzarne una scalabile e di facile manutenzione richiede disciplina. Le pratiche descritte di seguito contribuiscono a mantenere i vostri endpoint prevedibili, sicuri e facili da utilizzare per altri sviluppatori e agenti di intelligenza artificiale.
- Utilizzare i sostantivi, non i verbi, in URLs. Punti finali come /dipendenti/1 sono piรน chiari di /getEmployee?id=1, perchรฉ il verbo HTTP descrive giร l'azione.
- Restituisci codici di stato significativi. Invia 200 in caso di successo, 201 per una risorsa creata, 400 per una richiesta non valida, 401 per accesso non autorizzato, 404 per una risorsa mancante e 500 per errori del server.
- Versiona la tua API. Aggiunta di un segmento di versione come /v1/ Questo percorso consente di far evolvere il servizio senza interrompere i rapporti con i clienti esistenti.
- Proteggi ogni endpoint. Utilizza HTTPS, insieme a chiavi API o token OAuth 2.0, e convalida tutti gli input in entrata.
- Supporto per paginazione e filtri. La restituzione di grandi collezioni in pagine mantiene le risposte veloci e riduce il carico del server.
Seguire queste convenzioni rende l'integrazione del tuo servizio web RESTful intuitiva, sia che il client sia un'app mobile, un sistema partner o un flusso di lavoro automatizzato basato sull'intelligenza artificiale.




























