Introducció
Es vol fomentar l’ús directe de les API que existeixen per als diferents serveis en lloc d’utilitzar els connectors del framework de Canigó corresponents per a això. A causa d’això, aquesta guia servirà per generar un client Java per a l’API d’eFormularis existent mitjançant els fitxers d’especificació OpenApi.
Configuració Prèvia
Per utilitzar el plugin, és necessari seguir la guía de configuración general en este enllaç.
Generació del Client
Per implementar l’API d’eFormularis cal generar el client necessari per utilitzar-lo en els nostres projectes. Aquesta API consta d’un fitxer d’especificació que es pot descarregar directament des del vostre Swagger.
Un cop els tinguem descarregats, generarem el client corresponent. En el nostre exemple, farem servir Java com a llenguatge:
penapi-generator-cli generate -i eformularispre.json -g java --library restclient -o clienteformularis --package-name org.openapitools.eformularis --api-package org.openapitools.eformularis.api --model-package org.openapitools.eformularis.model --additional-properties=useSpringBoot=true
El paràmetre –library fa referència a les llibreries HTTP que utilitzarà el client, en aquest cas, serà un client REST.
El paràmetre -o fa referència a la ruta d’eixida on generarà el client. En aquest exemple, també s’ha indicat que faci ús de Spring Boot.
Per generar clients amb altres opcions, pots consultar la documentació oficial del plugin als següents enllaços:
Importar el Client
Un cop generat el client, Compilem el projecte amb Maven mitjançant mvn clean install i importem la llibreria a la nostra aplicació.
<dependency>
<groupId>org.openapitools</groupId>
<artifactId>openapi-java-client-eformularis</artifactId>
<version>1.0.0</version>
</dependency>
Ús del Client
Un cop importat el client, només ens quedaria utilitzar la llibreria al nostre projecte. A continuació mostrem un exemple en un projecte Java amb Spring Boot:
Main
import com.example.eformularisapitest.logic.PdfService;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
@SpringBootApplication
public class EformularisapitestApplication {
public static void main(String[] args) {
ApplicationContext context = SpringApplication.run(EformularisapitestApplication.class, args);
PdfService pdfService = context.getBean(PdfService.class);
pdfService.run();
}
}
Service
import org.openapitools.client.ApiClient;
import org.openapitools.client.api.ServeisinvocacioControllerApi;
import org.openapitools.client.model.PDFImageRequest;
import org.openapitools.client.model.Results;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.client.HttpStatusCodeException;
@Component
public class PdfService {
@Value("${pdf.base64}")
private String pdfBase64;
public void run() {
ApiClient defaultClient = new ApiClient();
defaultClient.setBasePath("https://preproduccio.cloud.eformularis.intranet.gencat.cat");
ServeisinvocacioControllerApi apiInstance = new ServeisinvocacioControllerApi(defaultClient);
String uuid = "1";
String ambit = "ambit";
String aplicacio = "aplicacio";
PDFImageRequest pdfImageRequest = new PDFImageRequest();
pdfImageRequest.setUuid(uuid);
pdfImageRequest.setAmbit(ambit);
pdfImageRequest.setAplicacio(aplicacio);
pdfImageRequest.setPdf(pdfBase64);
try {
Results result = apiInstance
.convertPDFtoImage(pdfImageRequest);
System.out.println(result);
} catch (HttpStatusCodeException e) {
System.err.println("Exception when calling ServeisInvocacioControllerApi#convertPDFtoImage");
System.err.println("Status code: " + e.getStatusCode().value());
System.err.println("Reason: " + e.getResponseBodyAsString());
System.err.println("Response headers: " + e.getResponseHeaders());
e.printStackTrace();
}
}
}
Application.yml
Definim el fitxer pdf en base 64 que convertirem a imatge.
pdf:
base64: JVBERi0xLjYNJeLjz9MNCjE3NjggMCBvYmoNPDwvRmlsdGVyL0...