Read
GET
GET risorsa ById
Per effettuare una lettura di una risorsa per chiave, occorre richiedere in GET la risorsa specificando l’id/chiave:
- La configurazione della richiesta HTTP come GET.
- L’URL completo, composto nell’ordine da:
server: variabile in base alla configurazione del server.porta: variabile in base alla configurazione del server.rootPath:tse_webapi, NON variabile.versione:v1, NON variabile.modulo: sigla, variabile in base all'appartenenza della risorsa interrogata.ambiente: variabile in base a quale, tra gli ambienti precedentemente configurati, si desidera accedere.risorsa: variabile in base al nome della risorsa che si desidera interrogare.id: variabile in funzione della chiave della risorsa che si vuole interrogare.
- I parametri specificati in QueryString, ovvero:
user(opzionale): variabile in funzione dell’utente applicativo da impersonare, se non specificato vale l'utente autenticato.company: variabile in funzione della azienda di lavoro da utilizzare.
- Gli headers HTTP impostati, la cui configurazione è stata descritta in precedenza.
http://webapi_base_url/v1/ambiente/modulo/risorsa/id?company=XX&user=YYY
La risposta ottenuta, mostrata nell’immagine qui sopra, è composta da:
status:200 OK, variabile in base al tipo di richiesta e al risultato dell’esecuzione (vedi la lista delle richieste disponibili, descritta precedentemente).headers: informazioni sulla risposta ottenuta.body: il contenuto vero e proprio della risposta, in formato JSON (di default) o XML.
GET: webapi_base_url/v1/production/{modulo}/{risorsa}/{id}
Parametri
- id: codice identificativo della risorsa da leggere
Codici risposta
200: l'oggetto{risorsa}DTOrichiesto404: se l'oggetto non è stato trovato
SEARCH
Ricerca risorsa
Per effettuare una ricerca dati relativamente ad una risorsa, occorre richiedere in POST l’operazione di ricerca sulla risorsa specificando il filtro di ricerca da utilizzare.
http://server:porta/rootPath/v1/ambiente/modulo/risorsa/search?company=XX&user=YYY
Si notino le differenze rispetto alla GET precedentemente descritte:
- La configurazione della richiesta HTTP ora è in POST.
- L’URL completo NON dichiara il parametro
id, che NON DEVE essere specificato: si sta operando infatti su tutte le entità esistenti, e non su una anagrafica specifica. - Il parametro aggiuntivo, il cui valore
searchè NON variabile in quanto definisce univocamente l’operazione di ricerca. - Il body della richiesta definisce un filtro specifico, singolo o multiplo sulle proprietà d'interesse.
{
"filters": {
"items": [
{
"comparer": 30,
"operator": 0,
"propertyName": "numdocorig",
"value": "51"
}
]
}
}
La risposta ottenuta, è composta da:
-
status: stato di ritorno della richiesta. -
headers: informazioni sulla risposta ottenuta. -
body: il contenuto vero e proprio della risposta.suggerimentola risposta ottenuta contiene la lista degli oggetti che corrispondono al filtro di ricerca applicato; ogni elemento della lista corrisponde alla struttura della risorsa principale definita in tutte le operazioni, sia di lettura che di inserimento/modifica, mentre gli elementi ad esso relazionati NON sono valorizzati.
Ricerca risorsa con paginazione e ordinamento
Esiste la possibilità di ricerca “avanzata” specificando la paginazione e l’ordinamento nell’oggetto del body. Di seguito, il body per la ricerca di documenti da 6 a 10 (seconda pagina: la prima pagina corrisponde a PageNumber = 0), ordinati per numreg in ordine ascendente.
L’array orderingProperties specifica la lista delle coppie <NomeProprietàDTO, [ASC(0)|DESC(1)]> per l’ordinamento della search, mentre gli attributi pageNumber e pageSize specificano l’eventuale paginazione. Se la paginazione viene omessa, di default saranno restituiti i primi 50 elementi. Si rimanda al paragrafo successivo per la definizione dell’oggetto di ricerca.
Eseguire una Search
Per eseguire una Search, occorre compiere una POST sulla risorsa “search".
Con riferimento alla chiamata:
{{webapi_base_url}}/rootPath/v1/{{scope}}/modulo/risorsa/Search?company={{defaultCompany}}&metadata=true&getTotalCount=true
La configurazione della richiesta HTTP come POST
L’URL completo, composto nell’ordine da:
webapi_base_url: variabile in base alla configurazione del serverrootPath: “api”, NON variabileversione: “v1”, NON variabilescope: variabile in base a quale, tra gli ambienti precedentemente configurati, si desidera accederemodulo: sigla, variabile in base all'appartenenza della risorsa interrogatarisorsa: sigla variabile in base al moduloSearch: “Search”, NON variabile
Il body della richiesta
Il body della richiesta è obbligatorio e deve essere definito seguendo queste regole:
- Deve contenere un oggetto
filterscon una singola proprietàitems. - Un oggetto di tipo
Itemdefinisce le proprietà:Comparer: operatore di confrontoOperator: operatore di comparazione tra gli elementi dell’arrayPropertyName: nome della proprietà da filtrareValue: valore della proprietà da filtrare
La proprietà PropertyName si riferisce alla struttura della risorsa principale definita in tutte le operazioni, sia di lettura che di inserimento/modifica; nel caso del documento quindi si può effettuare una ricerca filtrando tra le proprietà della testata del documento (numreg, numdoc, sezdoc, ecc…), ma non tra le righe del documento stesso.
La proprietà Comparer
La proprietà Comparer è un enumerato di tipo integer, i cui valori possibili sono:
-
Equal: 0 -
NotEqual: 1 -
GreaterThan: 10 -
LessThan: 11 -
GreaterOrEqualThan: 12 -
LessOrEqualThan: 13 -
Contains: 20 -
NotContains: 21 -
StartsWith: 30 -
EndsWith: 40suggerimento0 -
Equal- è il valore di default se la proprietàComparernon viene specificata.
La proprietà Operator
La proprietà Operator è un enumerato di tipo integer, i cui valori possibili sono:
-
None: 0 -
And: 1 -
Or: 2 -
Not: 3suggerimento0 -
None- è il valore di default se la proprietàOperatornon viene specificata; è obbligatorio specificare un valore diverso da 0 in caso di array di due o più elementi per gli elementi successivi al primo (si veda gli esempi seguenti).
Parametri di QueryString
I parametri specificati in QueryString, sono:
defaultCompany: variabile in funzione dell'azienda di lavoro da utilizzaremetadata: “true”, variabile ed opzionale; utilizzato per recuperare i metadati della lookup insieme ai dati stessigetTotalCount: “true”, variabile ed opzionale; utilizzato per valorizzare il campototalCountnella response
Paginazione e Ordinamento
Pagesize: Specifica la grandezza della pagina (di default è 50), impostando il parametro a -1 verranno restituiti tutti i record.PageNumber: Specifica il numero di pagina da ritornare (la pagina iniziale è il numero 0).OrderingProperties: Lista coppie<key, value>dove la chiave è il nome della proprietà del DTO su cui effettuare l’ordinamento e il valore la tipologia di ordinamento (ASC = 0,DESC = 1).
Codici risposta
200: la lista di oggetti di tipo{risorsa}DTOcorrispondenti al risultato della search400: se il filtro della search non è stato specificato
VALIDAZIONE
POST: webapi_base_url/v1/production/{modulo}/{risorsa}/validate
Parametri
- body: l'oggetto di tipo
{risorsa}DTOda validare
Codici risposta
200: se l'oggetto specificato risulta VALIDO400: se l'oggetto da validare non è stato specificato409: se l'oggetto specificato risulta NON VALIDO: il contenuto della risposta contiene i messaggi di validazione prodotti
VALIDAZIONE PROPRIETA' DI UNA RISORSA
POST: webapi_base_url/v1/production/{modulo}/{risorsa}/validateproperties
Parametri
- id: codice identificativo di un oggetto inesistente su cui validare le proprietà oppure per la validazione delle proprietà nei confronti di un nuovo oggetto
- body: una o più coppie 'chiave=valore', in formato x-www-form-urlencoded, in cui la chiave è il nome della proprietà del DTO ed il valore da assegnare prima di eseguire la validazione stessa
Codici risposta
200: se le proprietà dell'oggetto specificate risultano VALIDE400: se le proprietà dell'oggetto da validare non sono state specificate409: se una o più proprietà dell'oggetto specificate risultano NON VALIDE: il contenuto della risposta contiene i messaggi di validazione prodotti
LOOKUP
Per eseguire una lookup, occorre compiere una GET sulla risorsa “lookup".
Con riferimento alla chiamata:
{{webapi_base_url}}/rootPath/v1/{{scope}}/modulo/lookup/id?defaultcompany=000&metadata=true&_op=search
La configurazione della richiesta HTTP come GET
L’URL completo, composto nell’ordine da:
webapi_base_url: variabile in base alla configurazione del serverrootPath: “api”, NON variabileversione: “v1”, NON variabilescope: variabile in base a quale, tra gli ambienti precedentemente configurati, si desidera accederemodulo: sigla, variabile in base all'appartenenza della risorsa interrogatarisorsa: “lookup”, NON variabileid: variabile che identifica la ricerca (lookup) da utilizzare (che può corrispondere al nome di un'entità oppure di un query descriptor)
Parametri di QueryString
I parametri specificati in QueryString, sono:
user: variabile e opzionale, in funzione dell’utente applicativo da impersonaredefaultCompany: variabile in funzione della azienda di lavoro da utilizzaremetadata: “true”, variabile ed opzionale; utilizzato per recuperare i metadati della lookup insieme ai dati stessi_op: da valorizzare obbligatoriamente a 'search' per attivare la funzionalità di ricerca
Filtri, Ordinamento e Paginazione
I filtri, l'ordinamento e la paginazione sono passati nel Body della chiamata, in formato JSON così strutturato:
filters:Comparer: operatore di confrontoOperator: operatore di comparazione tra gli elementi dell’arrayPropertyName: nome dell'alias di colonna da filtrare (es.DocumentoTestataMG_Sezdoc)Value: valore della proprietà da filtrare
orderingProperties: variabile ed opzionale; utilizzato per applicare un ordinamento (crescente o descrescente) su uno o più campi specificati nella lookuppageNumber: variabile ed opzionale; utilizzato per specificare una specifica pagina di risultati della lookup chiamata (0 è la prima pagina, valore predefinito)pageSize: variabile ed opzionale; utilizzato per definire la dimensione della pagina (50 è il valore predefinito)
Headers HTTP
Gli headers HTTP configurati, la cui configurazione è stata descritta in precedenza.
La risposta ottenuta
La risposta ottenuta, mostrata nell’immagine qui sopra, è composta da:
status: “200 OK”headers: informazioni sulla risposta ottenutabody: i dati della lookup ed opzionalmente i suoi metadati
E' possibile, inoltre, specificare in QueryString anche il parametro filter che permette di fare una ricerca "veloce" sui campi chiave e quei campi dichiarati come "descrittivi".
Elenco Lookup Disponibili
GET: webapi_base_url/v1/production/FW/lookup/
Recupero Dati Lookup
GET: /api/v1/production/{moduleAcron}/lookup/{lookupname}
POST: /api/v1/production/{moduleAcron}/lookup/{lookupname}
Parametri
- moduleAcron: sigla del modulo di appartenenza della lookup (esempio:CO,MG, ...)
- lookupName: il nome della lookup relativa alle seguenti entità supportate
- metadata: se
true, recupera anche i metadati (la struttura) della lookup - _op: da valorizzare obbligatoriamente a 'search' per attivare la funzionalità di ricerca
- body: il filtro di ricerca da applicare alla search, in formato JSON, con la seguente struttura:
{
"filters": {
"items": [{
"comparer": 0,
"operator": 0,
"propertyName": "ItemWH_SubFamilyWH_CodFamMg53",
"value": "A"
}]
},
"pageNumber": 0,
"pagesize": 50,
"orderingproperties": {
"CustomerSupplierCO_Clifor": 0
}
}
Codici risposta
200: un array di oggetti, con la seguente struttura:
{
"description": "string",
"lookupName": "string",
"href": "string"
}