Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
| Prossima revisione | Revisione precedente | ||
| apireference:manifesto_microservizio [2024/04/08 12:57] – creata marcomerlino | apireference:manifesto_microservizio [2024/04/22 14:08] (versione attuale) – marcomerlino | ||
|---|---|---|---|
| Linea 21: | Linea 21: | ||
| {" | {" | ||
| + | |||
| + | Inoltre nello stesso potrà essere presente una sezione " | ||
| + | |||
| + | ==== Configurazione del Microservizio ==== | ||
| + | |||
| + | Fornirà al client informazioni utili per utilizzare correttamente per le api quali: | ||
| + | * numero massimo di risultati in ricerca | ||
| + | * numero massimo di elementi creabili | ||
| + | * numero massimo di elementi caricabili | ||
| + | * numero massimo di elementi salvabili | ||
| + | * numero massimo di elementi in una relazione multipla | ||
| + | * tempo di riciclo degli oggetti non committati (in millisecondi) | ||
| + | * locale supportati | ||
| + | * tempo massimo di vita degli oggetti non committati | ||
| + | * periodicità di verifica dellifetime degli oggetti | ||
| + | * tempo massimo di vita degli oggetti cancellati | ||
| + | * dimensione massima di una richiesta json (attenzione: | ||
| + | |||
| + | Le stesse potranno essere estese da configurazioni specifiche per microservizio (ad esempio: dimensione massima di un chunk di upload ) | ||
| + | |||
| + | Il client non potrà fare assunzioni sul valore delle stesse che sarà oggetto di tuning microservizio per microservizio (ad esempio un microservizio potrà consentire di caricare 1000 oggetti per volta, un altro solo di 10 per ragioni tecniche/di performance/ | ||
| + | |||
| + | ==== Definizione dei campi ==== | ||
| + | |||
| + | Ogni campo sarà rappresentato dalle seguenti proprietà: | ||
| + | |||
| + | * " | ||
| + | * " | ||
| + | * " | ||
| + | * " | ||
| + | |||
| + | **uuid**: "code di un oggetto": | ||
| + | |||
| + | nota: se l oggetto relazionato dovesse essere residente su un altro microservizio può essere cachato localmente fino al riavvio del microservizio | ||
| + | |||
| + | **date, datetime: " | ||
| + | |||
| + | non è possibile impostarla per campi " | ||
| + | |||
| + | Per valori di default più avanzati occorrerà implementare un event handler nel backend. | ||
| + | |||
| + | L' | ||
| + | |||
| + | Nota bene: il valore di default non è da intendersi come un' | ||
| + | |||
| + | * Elenco puntato" | ||
| + | * Elenco puntato" | ||
| + | * Elenco puntato" | ||
| + | * Elenco puntato" | ||
| + | * Elenco puntato" | ||
| + | * Elenco puntato" | ||
| + | * Elenco puntato" | ||
| + | * Elenco puntato" | ||
| + | |||
| + | Queste proprietà saranno affiancate da altre in future revisioni di questa specifica per accomodare la ricerca full-text (ad esempio il peso, e la ricercabilità). | ||
| + | |||
| + | Esempio: | ||
| + | |||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | } | ||
| + | |||
| + | ==== Indicazioni UI ==== | ||
| + | |||
| + | Per consentire all’UI di autogenerare i campi in una maniera organizzata verrà fornita una sezione, detta “ui” di suggerimenti così organizzata: | ||
| + | |||
| + | * Una lista ordinata di definizioni di Sezione, ogni sezione sarà caratterizzata da Nome, formato di visualizzazione dei campi (numero da 1 a 12) e elenco ordinato dei campi | ||
| + | * Per ogni campo verrà riportato in un oggetto il codice campo, così da lasciar aperta la specifica a ulteriori estensioni | ||
| + | |||
| + | L’utilizzo delle stesse è facoltativo, | ||
| + | Esempio: | ||
| + | “ui”:[ | ||
| + | { | ||
| + | “name”: | ||
| + | “format”: | ||
| + | “fields”: | ||
| + | | ||
| + | | ||
| + | ] | ||
| + | }, | ||
| + | { | ||
| + | “name”: | ||
| + | “format”: | ||
| + | “fields”: | ||
| + | | ||
| + | | ||
| + | ] | ||
| + | } | ||
| + | ] | ||
| + | |||
| + | ==== Il formato di Errore ==== | ||
| + | |||
| + | il formato d' | ||
| + | |||
| + | * codice errore (obbligatorio) | ||
| + | * descrizione testuale errore | ||
| + | * parametri errore | ||
| + | |||
| + | Ad esempio: | ||
| + | |||
| + | {" | ||
| + | |||
| + | ==== API del microservizio ==== | ||
| + | |||
| + | Ogni api per accedere a un modello sarà descritta in termini di: | ||
| + | |||
| + | * codice identificativo | ||
| + | * nome mnemonico | ||
| + | * verbo http (GET, POST, ...) | ||
| + | * url di accesso (assoluta rispetto alla root di dominio del manifest del microservizio o assoluta, quindi, se ad esempio abbiamo un manifest tipo https:// | ||
| + | * parametri url: saranno descritti i parametri concatenabili dall' | ||
| + | * parametri: saranno descritte le chiavi utilizzabili in un oggetto json trasferibile nel contenuto delle chiamate, in aggiunta ai tipi sin qui visti occorre prevedere i tipi speciali: " | ||
| + | * response | ||
| + | * capabilities richieste (oggetto contenente un array di capabilities in or organizzate per funzione) | ||
| + | |||
| + | Esempio: | ||
| + | |||
| + | " | ||
| + | |||
| + | * Elenco puntatoIn aggiunta alle chiamate standard la stessa potrà prevedere chiamate custom (es: changepassword). | ||
| + | * Il formato della risposta è sempre da intendersi in alternativa al formato d' | ||
| + | * Tutte le risposte potranno essere validate verificando la nullità del JSONPath (JSONPath) $.error.code | ||
| + | Per migliorare l' | ||
| + | |||