Un Mock Server consente all'utente di generare risposte API personalizzate senza avere effettivamente un'API pre-costruita o un server back-end, in pratica quando invii una richiesta alla API, il Mock Server effettua un controllo sulla tua richiesta e ti risponde con i dati che vorresti avere come risposta dalla API come se quest’ultima fosse in produzione.
Tale funzionalità ti permette di verificare come potenzialmente il tuo servizio opererà senza prima scrivere alcun codice; ciò si traduce con un aumento della rapidità di sviluppo delle API. Il ciclo di iterazioni diventa più corto e tale feedback di risposta inviato dal Mock Server è utile anche per il Front-End(FE) e per chi sfrutterà le API.
Il Mock Server è utile in diversi elementi del processo di sviluppo. Scopriamo quali:
Velocità: nell’ambito dello sviluppo lavorano insieme diverse figure professionali come sviluppatori di front-end, sviluppatori di back-end, ingegneri DevSecOps, ecc.. Per controllare la tua API durante lo sviluppo e prima che l'API reale sia completata oppure attiva sul server della tua organizzazione. Come anche la riduzione rapida dei bug. In pratica non ci sono blocchi nello sviluppo.
Integrazioni esterne: l’utilizzo di API esterne è una normalità negli attuali software, attraverso il Mock Server puoi simulare anche le risposte delle dipendenze di API terze fino a quando non andrai in produzione. Ciò ti permette di avere oltre ad uno sviluppo locale anche di non utilizzare risorse esterne prima che sia effettivamente necessario ed evitare problemi bloccanti con le risorse terze durante lo sviluppo rendendolo più veloce.
Privacy: durante lo sviluppo, usare informazioni reali, è un rischio che ti assumi. Grazie al Mock Server puoi simulare le informazioni personali prima di andare in produzione limitando i problemi con i dati sensibili.
Creiamo un file docker-compose.yml con il seguente contenuto:
version: "2.4"
services:
mockServer:
image: mockserver/mockserver:latest
ports:
- 1080:1080
environment:
MOCKSERVER_WATCH_INITIALIZATION_JSON: "true"
MOCKSERVER_PROPERTY_FILE: /config/mockserver.properties
MOCKSERVER_INITIALIZATION_JSON_PATH: /config/initJson.json
volumes:
- type: bind
source: .
target: /config
Dove creiamo un servizio denominato mockserver utilizzando l'immagine Docker mockserver/mockserver:latest;
Assegniamo la porta 1080;
Impostiamo le variabili d'ambiente forniti dal servizio;
Creiamo un'associazione del volume sulla directory corrente (dir di questo file) alla /config all'interno del container;
Infine settiamo il file JSON con i dati delle request/response con il seguente contenuto:
[
{
"httpRequest" : {
"method" : "GET",
"path" : "/api/v1/user",
"queryStringParameters" : {
"id" : ["1010"]
}
},
"httpResponse" : {
"body" : "{\"nome\": \"Mario\",\"cognome\": \"Rossi\",\"email\": \"[email protected]\"}",
"statusCode": 200
}
}
]
Avviamo il container con il comando:
docker-compose up -d
Testiamo il servizio effettuando una chiama GET all'url http://localhost:1080/api/v1/user?id=1010 ottendendo la seguente response:
{
"Nome":"Mario",
"Cognome":"Rossi",
"email":"[email protected]"
}
Come si può notare con pochi semplici passaggi abbiamo creato un servizio di API simulato che ti permette di velocizzare lo sviluppo dove i servizi richiesti non sono ancora disponibili.
Ulteriori dettagli sulle implementazione le trovi sul sito ufficiale.