Programació

RESTful: Guia ràpida per a principiants

30 d'octubre de 2021

Si voleu construir un interfície de programa d'aplicació (API) per a aplicacions web, s'utilitza RESTful. Què és una interfície de programa d'aplicació (API)? Una interfície de programa d'aplicació és un mediador entre dues aplicacions de programari. Permet que dues aplicacions de programari es comuniquin entre elles de forma segura i segura. Les aplicacions API típiques a la vida diària són utilitzar Facebook, utilitzar aplicacions de xat o utilitzar una aplicació de previsió meteorològica al telèfon mòbil.

Observem un exemple senzill per entendre què és exactament una API? Considereu l'exemple d'un restaurant. Anem a un restaurant i mengem el menjar que escollim. El que fem és observar la carta del menú i dir-li al cambrer els articles que has seleccionat del menú. Aleshores, el cambrer informa la vostra comanda al departament de cuina i es prepara el vostre menjar. Quan el menjar estigui llest, el cambrer us el serveix a la vostra taula. Aquí, el cambrer és la interfície entre tu i el departament de cuina. El mateix passa mentre dos sistemes es comuniquen.

Una interfície de programa d'aplicació (API) es classifica en quatre tipus principals, OpenAPI, Partner API, Internal API i Composite API. Tothom pot accedir a les OepnAPI, ja que estan disponibles públicament. A les API de partners, un usuari determinat necessita el dret adequat per accedir-hi, ja que no estan desenvolupades per a ús públic. Les API internes estan dissenyades especialment per a l'ús intern de l'empresa. Finalment, les API compostes s'utilitzen generalment per accelerar les operacions i el rendiment de l'empresa.

Un altre tipus d'API són les API de serveis web. Hi ha quatre API de serveis web principals, SOAP, XML-RPC, JSON-RPC i REST. SOAP implica a Protocol d'accés a objectes simple , que transfereix dades mitjançant el format XML. L'API SOAP implica l'ús de Llenguatge de definició de serveis web (WSDL) per definir la seva interfície. Una altra API de servei web és XML-RPC . Com el seu nom indica, va utilitzar el formulari XML per compartir dades. L'API XML-RPC és més senzilla i més accessible que l'API SOAP.

La següent API del servei web és JSON-RPC . És la mateixa API que XML, però utilitza el format JSON per compartir dades. Finalment, l'API REST és diferent de les tres anteriors. És la col·lecció d'estàndards arquitectònics. L'API REST també s'anomena API RESTful. És una de les API de serveis web més utilitzades, ja que requereix excepcionalment menys amplada de banda.

En aquest article, veurem una guia ràpida sobre el servei web RESTful. Aquesta publicació us ajudarà a aprendre tot sobre el servei web RESTful. Hem explicat els conceptes del servei web RESTful de manera més senzilla amb exemples senzills. Una cosa a recordar abans de començar entendre el RESTful L'API és que cal tenir un millor coneixement del llenguatge de programació Java, HTML, CSS, AJAX i Editor de text, ja que RESTful és un servei web per desenvolupar aplicacions web. Per tant, comencem el nostre tutorial de l'API RESTful.

Taula de continguts

Què és l'API RESTful Web Service?

Abans de saber què és l'API RESTful, primer sabrem què és realment el servei web. A servei web és un conjunt d'estàndards o principis necessaris per compartir o intercanviar dades entre sistemes. Avui en dia, fem servir diverses aplicacions als nostres telèfons mòbils i ordinadors de sobretaula. Aquestes aplicacions estan escrites en nombrosos llenguatges de programació, i encara funcionen en diferents sistemes operatius. Un servei web us permet accedir a una aplicació de programari determinada en diferents sistemes operatius.

L'API RESTful és una API de servei web. Inclou una col·lecció d'estàndards arquitectònics i utilitza un protocol HTTP per accedir i utilitzar dades particulars. REST implica Transferència d'Estat de representació . A l'API RESTful, cada component implicat es tracta com un recurs. Podeu accedir a aquests recursos mitjançant el Protocol HTTP mètodes.

Hi ha un servidor i un client implicats en l'API RESTful. Els clients de l'API REST poden accedir als recursos proporcionats pel servidor i manipular-los. Cada recurs té un URI o identificador global separat. Mitjançant l'URI o l'identificador global, podem identificar els recursos de l'API RESTful. URI implica a Identificador uniforme de recurs . Podeu utilitzar formats de text, XML.JSON o JSON a l'API REST per a la representació dels recursos.

Els consumidors del núvol solen utilitzar el servei web RESTful, cosa que els permet accedir i gestionar els serveis web. L'API REST serveix com una de les opcions més desitjables per crear una API robusta. Una API creada amb l'arquitectura REST permet als usuaris interactuar amb els serveis al núvol de manera manejable. Alguns dels llocs web populars que utilitzen el servei web RESTful per crear les seves API són Serveis web d'Amazon (AWS), Twitter, LinkedIn i Google.

Funcionament de l'API del servei web RESTful

Hem observat una breu descripció del servei web RESTful. Ara, feu-nos saber el funcionament de l'API RESTful. L'API RESTful desglossa cada transacció entre dues aplicacions qualsevol en diversos mòduls més petits. Aquí, la transacció implica l'intercanvi de dades o informació. Cada mòdul conté la informació essencial de la transacció. Per tant, els desenvolupadors se senten còmodes i flexibles a l'hora de crear una API per a qualsevol aplicació web.

Avui en dia, moltes empreses, com Cloud Data Management Interface (CDMI), AmazonS3, etc., ofereixen els seus models particulars per desenvolupar una API. Hi ha nombroses ordres al servei web de l'API RESTful per accedir als recursos. La representació del recurs defineix l'estat d'un recurs específic en una marca de temps determinada.

Mètodes HTTP a l'API del servei web RESTful

L'API del servei web RESTful utilitza el protocol HTTP per accedir i manipular recursos. Hi ha quatre mètodes HTTP principals utilitzats al servei web RESTful, GET, PUT, POST, DELETE. Feu-nos conèixer breument cadascun d'aquests mètodes HTTP.

    ACONSEGUIR:El mètode GET permet als usuaris accedir als recursos de l'API RESTful. Però no es poden modificar ni manipular. Mitjançant el mètode GET, només podeu llegir recursos.POSA:El mètode HTTP PUT us permet modificar els recursos o canviar-ne l'estat. També us permet crear un altre recurs nou.PUBLICACIÓ:Podeu utilitzar el mètode POST per crear un recurs nou.ELIMINAR:El mètode HTTP DELETE s'utilitza per suprimir el recurs.

L'API del servei web RESTful admet diversos formats de dades, com ara application/xml, application/json, application/x-www-form-urlencoded, application.x-web+xml i multipart/form-data.

Propietats i restriccions de l'arquitectura de l'API RESTful

El Dr. Roy Fielding és el desenvolupador de l'API del servei web RESTful. A continuació es mostren algunes propietats i limitacions significatives de l'arquitectura de l'API RESTful.

Propietats de l'API RESTful

  1. L'API RESTful ofereix un alt rendiment als usuaris finals. Quan un usuari fa clic a qualsevol enllaç, se li proporcionen resultats instantanis. I els desenvolupadors ofereixen tots els serveis als usuaris.
  2. Una altra propietat de l'API RESTful és l'escalabilitat. L'API RESTful ofereix serveis amb regularitat malgrat que els usuaris augmenten o disminueixen.
  3. L'API RESTful té una interfície uniforme. Tots els recursos s'identifiquen mitjançant els seus respectius URI. Per tant, aquesta interfície uniforme fa que l'API RESTful sigui senzilla.
  4. La següent propietat és la modificabilitat. Qualsevol canvi en el sistema s'ha de fer amb facilitat i comoditat.
  5. L'arquitectura de l'API RESTful és altament portàtil i fiable.

Restriccions arquitectòniques de l'API RESTful

Per a qualsevol API de servei web RESTful, s'han de complir les sis condicions arquitectòniques següents.

  1. La primera restricció arquitectònica per a l'API del servei web RESTful és que hauria d'utilitzar una interfície uniforme. Tots els recursos de l'API RESTful s'han d'identificar mitjançant els seus respectius identificadors uniformes de recursos (URI). Només s'ha d'accedir i manipular mitjançant els quatre mètodes HTTP, PUT, POST, GET i DELETE.
  2. El client i el servidor de l'API RESTful haurien de tenir una representació precisa. El client gestiona la interfície uniforme i la recollida de sol·licituds. D'altra banda, el servidor regula la seguretat, l'accés a les dades i la gestió de la càrrega de treball. El servidor conté tots els recursos i el client sol·licita recursos al servidor.
  3. Una altra limitació arquitectònica per a l'API del servei web RESTful són les operacions sense estat. El client i el servidor de l'API RESTful haurien de seguir funcions sense estat. Totes les operacions de gestió de l'estat s'han de dur a terme pel costat del client.
  4. Totes les API del servei web RESTful haurien de dur a terme la memòria cau. Si es representa que l'emmagatzematge a la memòria cau no és possible, només no s'hauria de dur a terme.
  5. L'arquitectura d'una aplicació concreta hauria de contenir el servidor en diverses capes. Una sola capa no hauria de tenir cap informació sobre altres capes, excepte la seva capa immediata.
  6. Generalment, el servidor envia les representacions estàtiques dels recursos al client en format XML o JSON. També hauria de transmetre el codi executable al client quan sigui necessari.

En el segment posterior, aprendrem a generar un servei web mitjançant els mètodes HTTP. Utilitzarem dos mètodes HTTP, GET i POST, per crear gestió d'usuaris. Les següents són algunes de les funcionalitats essencials utilitzades:

  1. Utilitzant el mètode HTTP GET amb un cos POST buit, mostrarem una llista amb els noms d'usuari. Preneu un identificador de recurs uniforme com a /Usuari/Servei/usuaris .
  2. Més tard, afegirem els detalls de cada usuari a una llista. Per a això, utilitzarem el mètode HTTP POST, amb JSON String al cos POST. Utilitzeu l'URI com a /Usuari/Servei/addUser .
  3. Finalment, mostrarem els detalls d'usuaris separats mitjançant el mètode HTTP GET. Manteniu el cos POST buit i utilitzeu l'URI com a /Usuari/Servei/getUser/:id .

Configuració de l'entorn per als serveis web RESTful

Per treballar amb el servei web RESTful, farem servir el Marc de Jersey . Aquest marc implementa l'especificació estàndard, anomenada API JAX-RS 2.0. Amb aquesta especificació, podem generar serveis web RESTful. Abans d'avançar cap a Jersey Framework, aprendrem a configurar l'entorn Eclipse, Tomcat i JDK al vostre sistema informàtic. Hem explicat la configuració dels tres entorns al sistema amb passos precisos i senzills.

Com configurar el Java Development Kit (JDK)?

El Kit de desenvolupament de Java (JDK) és un dels paquets essencials utilitzats per executar codi Java. El paquet JDK en Java permet als usuaris escriure els programes Java. Heu de descarregar aquest paquet, anomenat JavaSE, d'aquest lloc web :

Després de la descàrrega, instal·leu-lo amb l'ajuda de les directrius proporcionades. Un cop fet, heu d'arreglar les variables d'entorn PATH i JAVA_HOME al lloc on hi ha 'java' i 'javac'. Generalment, 'java' està present a java_install_dir/bin, i 'javac' està present a 'java_install_dir'.

Per arreglar les variables d'entorn PATH i JAVA_HOME als sistemes Windows XP, NT o 2000, aneu a 'El meu ordinador, feu-hi clic amb el botó dret i feu clic a 'Propietats'. Notareu la pestanya 'Avançat'. Feu-hi clic. i després feu clic a 'Variables d'entorn'. Canvieu les variables d'entorn PATH i JAVA_HOME amb la ubicació 'java' i 'javac' al sistema i feu clic al botó 'D'acord'. La configuració de la variable d'entorn està acabada.

Per als sistemes Linux i Solaris, seguiu els passos següents. Penseu que feu servir un shell C i heu descarregat el fitxer JavaSE a la ubicació /usr/local/jdk1.7.9_75. Actualitzeu el fitxer '.cshrc' amb les ordres següents:

|_+_|

Com configurar l'IDE d'Eclipse?

El primer que has de seguir és descarregar els últims binaris d'Eclipse des del seu oficial lloc web .

Després de descarregar els nous binaris de l'Eclipse, col·loqueu-los a la ubicació adequada del vostre sistema. Penseu que hem localitzat els binaris Eclipse als sistemes Windows a C:eclipse. Localitzarem els binaris d'Eclipse a la ubicació /usr/local/eclipse per al sistema Linux o Unix. Després de col·locar-lo a la ubicació adequada, fixeu la variable PATH al lloc on heu guardat els binaris de l'Eclipse.

Per iniciar Eclipse, feu doble clic al fitxer eclipse.exe o podeu escriure l'ordre següent a l'indicador d'ordres de Windows.

|_+_|

Si utilitzeu Eclipse al sistema Linux o Solaris, utilitzeu l'ordre següent per iniciar-lo.

|_+_|

Si tot va bé i la configuració és correcta, s'inicia l'aplicació i apareix la pantalla per escriure el codi.

Com configurar Apache Tomcat?

Aquí, entendrem com instal·lar i configurar l'entorn del vostre sistema per a Apache Tomcat. En primer lloc, heu de descarregar l'última versió de Tomcat lloc web .

Després de descarregar aquesta darrera versió de Tomcat, col·loqueu-la en un lloc adequat del vostre sistema.

Considerem que hem col·locat el fitxer Tomcat Apache al sistema Windows a la ubicació C:apache-tomcat-7.0.59. Col·locarem el fitxer Tomcat Apache a la ubicació /usr/local/apache-tomcat-7.0.59 del Linux o sistema Solaris. Després d'això, heu d'arreglar la variable d'entorn CATALINA_HOME al lloc on heu desat el fitxer Tomcat Apache descarregat.

Podeu iniciar l'aplicació Tomcat al vostre sistema Windows fent clic al fitxer startup.bat. També podeu utilitzar l'ordre següent per iniciar l'aplicació Tomcat.

|_+_|

o

|_+_|

Si utilitzeu l'aplicació Tomcat al sistema Linux o Solaris, heu de seguir qualsevol de les ordres següents per iniciar-la.

|_+_|

o

|_+_|

Quan tot està bé, apareix una pantalla on podeu escriure el codi i executar-lo. Totes les aplicacions predeterminades amb Tomcat estaran disponibles visitant el següent lloc web :

La informació completa sobre la configuració de Tomcat i els programes en execució està disponible a lloc web .

Si voleu aturar l'aplicació Tomcat al sistema Windows, escriviu qualsevol de les ordres següents.

|_+_|

o

|_+_|

Podeu escriure qualsevol de les dues ordres esmentades a continuació per tancar l'aplicació Tomcat.

|_+_|

o

|_+_|

Com configurar les biblioteques del marc de Jersey?

Després de configurar el JDK, l'Eclipse i el Tomcat Apache, ara podeu anar a configurar el Jersey Framework. Seguiu les directrius següents seqüencialment per descarregar el marc de Jersey.

  1. En primer lloc, heu de decidir el sistema operatiu, com Windows o Unix, per instal·lar-hi Jersey Framework. Si trieu el sistema Windows, descarregueu el fitxer .zip i, per als sistemes Unix, baixeu el fitxer .tz.
  2. El següent pas és descarregar els nous binaris de Jersey Framework a continuació lloc web .
  3. Després de descarregar el fitxer .zip al sistema Windows, cal descomprimir-lo. Suposem que heu descarregat el fitxer jaxrs-ri-2.17.zip. Després de descomprimir aquest fitxer, proporciona una estructura de directoris a la ubicació E:jaxrs-ri-2.17jaxrs-ri.
  4. Totes les biblioteques de Jersey estaran al directori C:jaxrs-ri-2.17jaxrs-rilib, i les dependències estaran presents a C:jaxrs-ri-2.17jaxrs-riext.
  5. Més tard, fixeu la variable CLASSPATH al lloc on hi ha les vostres biblioteques de Jersey, directori C:jaxrs-ri-2.17jaxrs-rilib. Recordeu que no cal arreglar la variable CLASSPATH per a Jersey Framework si feu servir l'aplicació Eclipse.

Ara ja sabeu com configurar l'entorn per al servei web RESTful. Seguiu tots els passos anteriors i estaràs preparat per escriure l'exemple de Jersey.

Primer exemple RESTful: Jersey (JAX-RS)

Després de configurar l'entorn Java, Tomcat Apache, Eclipse i Jersey Framework, podeu començar a crear aplicacions web mitjançant l'API RESTful. Observem un exemple al Jersey Framework per tenir una idea precisa sobre com escriure el programa a l'API RESTful. Heu de seguir els passos esmentats a continuació de forma seqüencial per executar el programa amb èxit.

Pas 1: creeu un projecte Java

Creeu un projecte Java utilitzant un IDE Eclipse. Aquí, crearem un projecte web dinàmic. A continuació es mostren els passos per fer-ho desenvolupar la Web Dinàmica Projecte en un IDE Eclipse.

  1. Inicieu l'aplicació Eclipse des del vostre sistema. Feu clic a l'opció Fitxer, feu clic a Nou i seleccioneu Projecte nou.
  2. Més tard, trieu l'assistent Projecte web dinàmic de la llista d'assistents.
  3. Després de seleccionar l'assistent, doneu el nom desitjat al vostre projecte, per exemple FirstRestExample .
  4. Quan deseu el nom del vostre projecte a la finestra de l'assistent, aneu a l'Explorador de projectes i hi notareu el nom del vostre projecte.

Pas 2: afegiu les biblioteques necessàries

Després de crear el projecte i desar-lo amb un nom específic, heu d'afegir les biblioteques i dependències de Jersey Framewoek al vostre projecte. Hem llistat els noms dels fitxers jar que s'han de copiar al directori WEB-INF/lib del projecte creat des de la carpeta zip de la samarreta.

  • jaxrs-ri-2.17jaxrs-riapi
  • jaxrs-ri-2.17jaxrs-riext
  • jaxrs-ri-2.17jaxrs-rilib

Per afegir els fitxers jar anteriors esmentats al vostre projecte, feu clic amb el botó dret al vostre projecte, FirstRestExample . Feu clic a l'opció Build Path i després aneu a Configura Build Path. Aquí, veureu la finestra que mostra el camí de compilació de Java. A més, veureu el botó Afegeix JAR al menú Biblioteques. Afegiu els fitxers jar al directori WEB-INF/lib.

Pas 3: creeu els fitxers font

Hem creat el nostre projecte, anomenat FirstRestExample, a l'IDE d'Eclipse. Ara, hem de crear els fitxers font per a aquest projecte. Per fer els fitxers font, primer necessitem crear un paquet, per exemple com.restexample. Aneu a l'explorador de paquets i feu clic amb el botó dret a l'opció src. Trobareu l'opció Nou. Feu-hi clic i després feu clic a l'opció Paquet.

Aquí heu de crear tres fitxers diferents sota el paquet com.restexample. Anomenem els fitxers com a EmployeeService.java, Employee.java i EmployeeDao.java. Als tres fitxers, heu creat sota el paquet com.restexmaple i heu d'escriure el codi. Primer escriurem el codi al fitxer Employee.java.

Employee.java

|_+_|

EmployeeDao.java

|_+_|

EmployeeService.java

|_+_|

Al fitxer EmployeeService.java anterior, heu de recordar que hem utilitzat l'anotació @Path per especificar la ruta del servei web. A més, també hem establert un camí per al mètode de servei web específic mitjançant l'anotació @Path.

Pas 4: creeu el fitxer Web.xml

Finalment, hem de crear el fitxer Web.xml. L'objectiu principal del fitxer Web.xml és assignar el servlet Jersey Framework per a l'aplicació que s'està desenvolupant.

web.xml

|_+_|

Pas 5: compileu i executeu el programa

Després d'escriure els quatre fitxers anteriors esmentats, ara ja esteu preparat per compilar i executar el programa. Hem utilitzat l'IDE Eclipse per escriure tots els programes anteriors. Per tant, hem d'exportar l'aplicació anterior en un fitxer de guerra. Més tard, haurem de compilar i executar aquest fitxer de guerra a l'eina Tomcat Apache.

A continuació us mostrarem com crear un fitxer de guerra a l'IDE d'Eclipse.

  • A l'IDE de l'Eclipse, aneu a l'opció Fitxer, feu clic a Exporta -> Nosaltres -> Fitxer de guerra. Allà has de triar el teu projecte FirstRestExample i la carpeta de destinació.
  • Més tard, haureu de localitzar el fitxer FirstRestExample.war al fitxer Directori d'instal·lació de Tomcat opció directori d'aplicacions web . I inicieu l'aplicació Tomcat.

Després de col·locar el fitxer de guerra al directori d'aplicacions web de Tomcat, podeu executar la vostra aplicació. Utilitzarem l'extensió de Chrome, Carter , per provar les nostres aplicacions. El següent pas és col·locar tots els empleats a POSTMAN. Per a aquest propòsit, utilitzeu la línia de codi següent

|_+_|

Per utilitzar la línia de codi anterior al Tomcat Apache, utilitzeu el mètode HTTP GET. Aquí teniu la vostra primera aplicació de servei web preparada.

Missatges a l'API del servei web RESTful

A l'API RESTful, el client i el servidor es comuniquen entre ells mitjançant el protocol HTTP. La comunicació es produeix quan el client envia una sol·licitud HTTP al servidor i el servidor respon al client amb la resposta HTTP. La comunicació entre el client i el servidor mitjançant el protocol HTTP es coneix com a missatgeria. Un únic missatge HTTP conté dades i metadades del missatge. Les metadades són informació del missatge.

Ara, mirem la sol·licitud HTTP i la resposta HTTP a l'API del servei web RESTful.

Sol·licitud HTTP

El client dirigeix ​​una sol·licitud HTTP al servidor. Demana els recursos al servidor. Hi ha cinc parts principals incloses en una sol·licitud HTTP, un verb, un URI, una versió HTTP, una capçalera de la sol·licitud i un cos de sol·licitud. El següent és un format de sol·licitud HTTP.

REPOSAT

Descrivim breument cada part d'una sol·licitud HTTP.

    Verb:Un verb en una sol·licitud HTTP implica els quatre mètodes HTTP, GET, POST, PUT i DELETE.Identificador uniforme de recursos (URI):La següent part d'una sol·licitud HTTP és un identificador de sol·licitud uniforme (URI). Un URI identifica cada recurs de manera única.Versió HTTP:La tercera part d'una sol·licitud HTTP és una versió HTTP. Per exemple, HTTP v1.1, on v1.1 és una versió.Capçalera de la sol·licitud:La capçalera de la sol·licitud conté les metadades del missatge. Les metadades de la capçalera de la sol·licitud estan presents al parell clau-valor. Pot recopilar informació, com ara el tipus de client, la configuració de la memòria cau, el format del missatge, etc.Òrgan de la sol·licitud:El cos de la sol·licitud en una sol·licitud HTTP implica la representació del recurs.

Resposta HTTP

Quan el servidor obté una sol·licitud HTTP del client, respon al client amb una resposta HTTP. Una resposta HTTP inclou quatre parts importants, el codi de resposta, la versió HTTP, la capçalera de la resposta i el cos de la resposta. A continuació es mostra un format de resposta HTTP.

img 617dd1cb36593

Parlem aquí de cada part de la resposta HTTP.

    Codi de resposta:

El codi de resposta també es coneix com a estat. Quan el client sol·licita el recurs al servidor, el codi de resposta mostra el seu estat. Si l'estat és 404, no es troba el recurs. Si la resposta és correcta, l'estat és 200.

    Versió HTTP:

La segona part d'una resposta HTTP és una versió HTTP. Per exemple, HTTP v1.1, on v1.1 és una versió.

    Capçalera de resposta:

La capçalera conté les metadades del missatge de resposta HTTP en forma de parell clau-valor. Pot tenir informació com el tipus de servidor, la longitud del contingut, les dades de resposta, etc.

    Cos de resposta:

El cos de resposta inclou la representació del recurs.

A l'exemple anterior de l'API del servei web RESTful, hem posat http://localhost:8080/FirstRestExample/rest/EmployeeService/employees .

Al POSTMAN, utilitzant el mètode HTTP GET. Quan la sol·licitud s'enviï mitjançant el mètode GET, rebrem un missatge XML de la següent manera. Per visualitzar una resposta XML, heu de fer clic al botó Vista prèvia.

|_+_|

Recurs a l'API del servei web RESTful

A l'API del servei web RESTful, cada contingut es tracta com un recurs. El client sol·licita el recurs i el servidor proporciona accés a un recurs concret sol·licitat pel client. Després de donar accés, el client pot modificar o canviar el recurs. El recurs pot ser pàgines HTML, imatges, fitxers de text o dades empresarials.

Hi ha un número únic per a cada recurs a l'arquitectura REST. Aquest número únic es coneix com a URI (Uniform Resource Identifier). Generalment, el recurs a l'arquitectura REST es representa mitjançant un format XML o JSON. Vegem ara la representació dels recursos a l'arquitectura REST.

Representació de recursos en l'arquitectura REST

Els recursos de l'arquitectura REST es representen en formats XML o JSON. Podeu tractar un recurs REST com una entitat a la base de dades o com un objecte en la programació orientada a objectes. En primer lloc, el recurs s'identifica mitjançant el seu identificador uniforme de recursos (URI). Posteriorment, es decideix el format estàndard per representar el recurs. Quan el client sol·licita el recurs, el servidor reenvia el recurs en la forma especificada pel client.

En el nostre exemple RESTful anterior, tenim un 'empleat' com a recurs. Vegem com es representa un recurs 'empleat' mitjançant un formulari XML.

|_+_|

Ara, representarem el mateix recurs 'empleat' en el formulari JSON.

|_+_|

A l'arquitectura REST, podeu representar recursos en qualsevol format. Hi ha casos a l'API del servei web RESTful en què un client sol·licita el recurs en un formulari XML mentre que l'altre client sol·licita el mateix recurs en el formulari JSON. L'única cosa significativa en la representació del recurs és que s'ha de representar en un format que el client el pugui entendre.

Quan el recurs es representa en qualsevol format, hi ha alguns requisits previs a tenir en compte. El format del recurs ha de ser entenedor, complet i enllaçable. El client i el servidor a l'arquitectura REST haurien de reconèixer el format de representació de recursos ràpidament. Qualsevol forma que trieu per representar el recurs, hauria de proporcionar la informació completa del recurs. El format de representació del recurs ha de permetre l'enllaç a qualsevol altre recurs.

La majoria dels desenvolupadors utilitzen el formulari JSON o XML per representar el recurs a l'arquitectura REST. Actualment hi ha nombroses eines disponibles per modificar les dades JSON o XML.

Adreçament a l'API del servei web RESTful

L'adreçament a l'arquitectura REST implica localitzar els recursos que estan presents al servidor. Sabem que els recursos s'identifiquen pels seus identificadors uniformes de recursos (URI). El format d'un identificador de recurs uniforme és el següent:

:////

L'URI localitza un recurs concret al servidor. En el nostre exemple anterior, l'URI és

|_+_|

Hem utilitzat el mètode HTTP GET per a l'URI anterior.

Potser us preguntareu com es genera l'URI. Us guiarem amb algunes regles senzilles per crear l'URI per a qualsevol recurs de l'arquitectura REST.

  1. Quan definiu recursos als vostres serveis web, feu servir sempre la forma plural. A l'exemple d'aplicació web RESTful anterior, hem creat un recurs 'usuaris'.
  2. Heu d'assegurar-vos que el nom del vostre recurs no ha de contenir espais en blanc o símbols especials, com ara %, $, @, etc. Podeu utilitzar un guionet (-) o un guió baix (_) al nom del recurs. Per exemple, el nom correcte del recurs és effect_empleats i no effect@empleats.
  3. Al servei web RESTful, els URI no distingeixen entre majúscules i minúscules. Però, sempre és millor mantenir l'URI en minúscules.
  4. Assegureu-vos que feu servir qualsevol dels verbs o mètodes HTTP per realitzar operacions sobre recursos. A l'aplicació RESTful anterior, hem utilitzat el mètode HTTP GET.
  5. L'URI s'ha de publicar públicament, ja que els serveis web són serveis públics.

Vegem un exemple d'URI bo i dolent per buscar un empleat.

URI pobre

|_+_|

Bona URI

|_+_|

Java (JAX-RS) a l'API del servei web RESTful

JAX-RS implica Jakarta RESTful Web Services. Abans, es coneixia com a API de Java per a serveis web RESTful. JAX-RS és una API basada en Java que permet als usuaris crear serveis web basats en l'arquitectura REST. La darrera versió de JAX-RS és la 2.0, publicada el 2013. Aquesta API basada en Java utilitza anotacions de Java SE 5, cosa que fa que el desenvolupament i el desplegament de serveis web siguin més manejables.

Especificacions JAX-RS

A continuació es mostren algunes anotacions que s'utilitzen habitualment per assignar un recurs com a recurs de servei web.

    @ACONSEGUIR:Aquesta especificació de JAX-RS s'utilitza per obtenir el recurs.@Camí:@Path implica el camí de la classe o mètode inclòs al servei web.@DELETE:El recurs @DELETE suprimeix un recurs concret.@POST:L'especificació anterior a JAX-RS crea un nou recurs.@POSA:Aquesta especificació JAX-RS s'utilitza per actualitzar un recurs existent.@Consumeix:L'especificació @Consumes JAX-RS representa el tipus de sol·licitud HTTP.@HEAD:Un altre mètode HTTP a JAX-RS és @HEAD, que ofereix informació sobre si el mètode està disponible o no.@QueryParam:L'especificació anterior s'utilitza per combinar el paràmetre de consulta i el paràmetre passat al mètode.@Produeix:L'especificació @Produces mostra el tipus de resposta HTTP.@PathParam:L'especificació JAX-RS anterior s'utilitza per combinar el valor del camí amb el paràmetre passat al mètode.@CookieParam:@CookieParam combina una cookie amb el paràmetre passat al mètode.@MatrixParam:Aquesta especificació JAX-RS combina el paràmetre de la matriu HTTP amb un paràmetre que es passa al mètode.@FormParam:El valor del formulari es combina amb el paràmetre passat al mètode mitjançant @FormParam.@HeaderParam:La capçalera HTTP s'enllaça amb el paràmetre passat al mètode mitjançant @HeaderParam.@Context:@Context implica context de recursos.@Valor per defecte:L'especificació JAX-RS anterior assigna el paràmetre passat al mètode amb un valor per defecte.

L'apatridia i la memòria cau de l'API del servei web RESTful

L'apatridia

L'apatridia implica que l'estat del client no hauria d'estar present al servidor. El client envia el seu context al servidor. En rebre el context del client, el servidor emmagatzema el context i l'utilitza per a més sol·licituds del client. Per exemple, el client envia l'identificador de sessió al servidor. Per tant, el servidor el conserva per identificar sessions.

Avantatges:

A continuació es mostren alguns avantatges significatius de l'apatridia a l'API del servei web RESTful.

  • Utilitzant la propietat sense estat, el servei web processa cada sol·licitud de mètode individualment.
  • El servidor no manté l'estat del client ni les operacions anteriors. Per tant, simplifica el disseny de l'aplicació.
  • Els serveis web RESTful es processen virtualment amb els protocols HTTP.

Contres:

  • Com que el servidor no conté l'estat del client, el servei web requereix més dades de cada sol·licitud del client.

Emmagatzematge a la memòria cau

El client té alguns recursos del servidor en termes de resposta. Per tant, el client no ha de demanar al servidor repetidament el mateix recurs. Això s'anomena memòria cau. A partir de la informació de la memòria cau d'un recurs en particular que ofereix el servidor, el client decideix si emmagatzema el recurs a la memòria cau durant el temps específic o si no l'emmagatzema mai.

Hi ha una capçalera de control de memòria cau que consta de cinc parts significatives, pública, privada, d'edat màxima, sense memòria cau/sense emmagatzematge i de revalidació obligatòria. Vegem la descripció de cada part a continuació.

    Públic:Qualsevol component pot emmagatzemar a la memòria cau un recurs que és públic.Privat:Ningú no té permís per emmagatzemar el recurs a la memòria cau. Només el client i el servidor poden emmagatzemar el recurs a la memòria cau.edat màxima:L'element d'edat màxima es calcula en segons. Implica quants segons és vàlid la memòria cau del recurs. Un cop finalitzat el temps màxim d'edat, el client ha de tornar a sol·licitar el recurs.no-cache/no-store:El client no pot emmagatzemar el recurs a la memòria cau.cal revalidar:El servidor ha de revalidar el recurs quan finalitzi el temps màxim d'edat per a la memòria cau.

Per configurar la memòria cau del client, la resposta del servidor inclou les capçaleres següents:

    Data:La data i l'hora de creació del recurs es representen a la capçalera Data.Cache-Control:La capçalera de control de memòria cau supervisa la memòria cau.Edat:L'edat es representa en segons. És el moment en què es rep el recurs del servidor.Última modificació:Aquesta capçalera mostra la data i l'hora en què es va actualitzar el recurs per darrera vegada.Caduca:Aquesta capçalera implica la data i l'hora de caducitat de la memòria cau.

Mètodes HTTP i les seves operacions a l'API RESTful

A la secció anterior, hem vist els mètodes HTTP i els seus usos. Aquest segment ha d'observar els mètodes HTTPS, les seves operacions i el tipus d'operació a l'arquitectura REST.

    ACONSEGUIR:

El mètode GET HTTP de l'exemple d'aplicació RESTful anterior s'utilitza per obtenir la llista d'empleats. Hem utilitzat l'URI per al mètode GET de la següent manera:

|_+_|

El mètode HTTP GET adquireix la llista d'empleats. Per tant, té un tipus d'operació només de lectura.

També podem utilitzar el mètode GET per recuperar l'empleat Id 1. L'URI per recuperar l'empleat Id 1 és,

|_+_|

Aquesta operació també és de tipus només de lectura.

    PUBLICACIÓ:

En el nostre exemple d'aplicació RESTful, hem utilitzat el mètode HTTP POST per inserir l'empleat amb l'Id 2. L'URI per inserir l'empleat per a l'Id 2 és:

|_+_|

El tipus d'operació anterior no és idempotent.

    ELIMINAR:

Podem utilitzar el mètode HTTP DELETE per suprimir l'empleat amb Id 1. A continuació es mostra l'URI per suprimir l'empleat amb Id 1.

|_+_|

L'operació DELETE és del tipus idempotent.

    CAP:

El mètode HEAD en una arquitectura REST s'utilitza per retornar la capçalera HTTP. No proporciona el cos HTTP. Per al nostre exemple d'empleat anterior, podem utilitzar l'URI següent.

|_+_|

Aquesta operació és de tipus només de lectura.

    POSA:

A l'aplicació REST Employee anterior, podem utilitzar el mètode HTTP PUT per actualitzar l'empleat amb l'identificador 2. Utilitzeu l'URI següent per actualitzar l'empleat amb l'identificador 2.

|_+_|
    OPCIONS:

Els mètodes HTTP OPTIONS us permeten llistar totes les operacions admeses al servei web. Podeu utilitzar l'URI següent per a aquesta operació.

|_+_|

L'operació OPCIONS és de tipus només de lectura.

A partir dels mètodes HTTP anteriors i de les seves operacions, podem concloure que l'operació GET és un tipus de només lectura. Les operacions DELETE i PUT són de tipus idempotent. El resultat d'aquestes dues operacions segueix sent el mateix, encara que es realitzin diverses vegades.

Conclusió

L'API RESTful és una API basada en l'arquitectura REST que utilitza els mètodes HTTP per accedir i organitzar les dades. Totes les dades de l'arquitectura REST es considera un recurs. Si voleu aprendre l'API RESTful, aquesta publicació és una guia completa per a vosaltres.

Hem vist què és l'API del servei web RESTful, com funciona, els mètodes HTTP utilitzats a l'arquitectura REST i les propietats i restriccions de l'arquitectura REST. Més tard, hem representat la configuració de l'entorn per a l'API RESTful. A la configuració de l'entorn API RESTful, hem configurat l'entorn JDK, Tomcat Apache, Eclipse IDE i Jersey Framework. Podeu observar l'exemple senzill d'aplicació RESTful en aquest tutorial.

A continuació, hem tractat diversos elements de l'API del servei web RESTful, com ara missatges, sense estat, memòria cau, recursos i adreçament. També hem comentat el Java JAX-RS i les seves especificacions. Finalment, hem vist els mètodes HTTP i les seves operacions amb URI i tipus d'operació.