FAM - Crida servei REST

1. Introducció

En aquest article, s'explica com fer crides a serveis REST des d'una aplicació tipus FAM.

Aquest tipus de serveis té una estructura molt més simple que la de serveis web (fins i tot es poden fer crides per url)

 

2. Crida des del FAM

Donat un servei REST publicat volem fer una crida des d'una aplicació FAM. Ho farem amb l'ajut de la llibreria Jersey

 

2.1. Dependències

Primer de tot necessitem definir al pom.xml la dependència amb la llibreria del client de Jersey

<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-client</artifactId>
    <version>1.8</version>
</dependency>

 

Per problemes de llibreries s'ha d'afegir la llibreria client de weblogic

<dependency>
    <groupId>weblogic</groupId>
    <artifactId>wlfullclient</artifactId>
    <version>10.3.0.0</version>
    <scope>provided</scope>
</dependency>

2.2. Classe client

Un cop definida la dependència podem fer el client que farà les crides

Client client = Client.create();
WebResource wr = client.resource(url);
ClientResponse response = wr.accept("application/xml").get(ClientResponse.class);

A partir d'una url et fa la crida 

 

2.3. Exemple repositori de plantilles

En aquest exemple (implementat al projecte eNoti) es tracta la resposta per validar l'estat i després es parseja per poder carregar la classe resposta i poder llegir la informació, com ara el contingut de la plantilla.

if (response.getStatus() != 200) {
    throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
}

PlantillaRestResposta output = response.getEntity(PlantillaRestResposta.class);
byte[] byteArray = output.getPlantilla();

 

La resposta real del repositori de plantilles és un xml com

<plantillaRestRespostaplantillaRestResposta>
    <nomPlantilla>TramesaGen</nomPlantilla>
    <plantilla>bytearrayplantilla</plantilla>
    <versio>1.1</versio>
</plantillaRestResposta>

 

Per poder parsejar aquesta resposta es defineix la classe PlantillaRestResposta com

package cat.diba.jee.enoti.ws.repositoriplantilles;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class PlantillaRestResposta { 
    private byte[] plantilla; 
    private String versio; 
    private String nomPlantilla; 

    public PlantillaRestResposta() { } 
    [... Getters i Setters ...]
 }

 

La situació óptima seria que en fer un servei REST es donessin també les classes de resposta en un jar

 

2.4. Exemple validació VUS

L'exemple del VUS és anàleg, però la resposta és molt més complexa i s'han de fer multiples objectes relacionats per poder tractar-la.

Al projecte eNoti hi ha un integració feta.

 

3. Proves

Per poder provar aquests serveis, es pot fer des del navegador o amb l'ajuda de plugins que permeten definir la crida amb més detall (per exemple, paràmetres per post)

Per Chrome tenim el plugin Postman https://chrome.google.com/webstore/detail/postman-rest-client/fdmmgilgnpjigdojojpjoooidkmcomcm

 

 

2
Etiquetes:
FAM, rest
1
Grups de treball:
Plataforma JEE