Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il generatore di API dati (DAB) fornisce un'API Web RESTful che consente di accedere a tabelle, viste e stored procedure da un database connesso. Ogni oggetto di database esposto viene definito come entità nella configurazione di runtime.
Per impostazione predefinita, DAB ospita gli endpoint REST in:
https://{base_url}/api/{entity}
Annotazioni
Tutti i componenti del percorso e i parametri di query fanno distinzione tra maiuscole e minuscole.
Parole chiave supportate in Generatore API dati
| Concetto | REST | Scopo |
|---|---|---|
| Proiezione | $select | Scegliere i campi da restituire |
| Filtraggio | $filter | Limitare le righe per condizione |
| Ordinamento | $orderby | Definire l'ordinamento |
| Dimensioni della pagina | $first | Limitare gli elementi per pagina |
| Continuazione | $after | Continua dall'ultima pagina |
Struttura di base
Per chiamare un'API REST, creare una richiesta usando questo modello:
{HTTP method} https://{base_url}/{rest-path}/{entity}
Esempio di lettura di tutti i record dall'entità book :
GET https://localhost:5001/api/book
La risposta è un oggetto JSON con una value matrice. Le informazioni sull'impaginazione e sull'errore vengono visualizzate solo quando applicabile.
Annotazioni
Per impostazione predefinita, DAB restituisce fino a 100 elementi per ogni query, a meno che non sia configurato diversamente (runtime.pagination.default-page-size).
GET https://localhost:5001/api/book
Successo:
{
"value": [
{ "id": 1, "title": "Dune", "year": 1965, "pages": 412 },
{ "id": 2, "title": "Foundation", "year": 1951, "pages": 255 }
]
}
Paginazione riuscita:
{
"value": [
{ "id": 1, "title": "Dune", "year": 1965, "pages": 412 },
{ "id": 2, "title": "Foundation", "year": 1951, "pages": 255 }
],
"nextLink": "https://localhost:5001/api/book?$after=WyJCb29rMiJd"
}
Risultato vuoto (elemento non trovato):
{
"value": []
}
Annotazioni
Una richiesta GET per una chiave primaria inesistente restituisce 200 OK con una matrice vuota value , non 404 Not Found. Verificare la presenza di una matrice vuota per determinare se l'elemento esiste.
Tipi di query
Ogni entità REST supporta sia letture di collezione che letture singole.
| Operation | Descrizione |
|---|---|
GET /api/{entity} |
Restituisce un elenco di record |
GET /api/{entity}/{primary-key-column}/{primary-key-value} |
Restituisce un record per chiave primaria |
Esempio che restituisce un record:
GET /api/book/id/1010
Esempio che restituisce un insieme di risultati:
GET /api/book
Filtro dei risultati
Usare il $filter parametro di query per limitare i record restituiti.
GET /api/book?$filter=title eq 'Foundation'
Questa query restituisce tutti i libri il cui titolo è uguale a "Foundation".
I filtri possono includere operatori logici per query più complesse:
GET /api/book?$filter=year ge 1970 or title eq 'Dune'
Per altre informazioni, vedere il riferimento all'argomento $filter.
Ordinamento dei risultati
Il $orderby parametro definisce la modalità di ordinamento dei record.
GET /api/book?$orderby=year desc, title asc
In questo modo vengono restituiti i libri ordinati in year ordine decrescente, quindi in base a title.
Per ulteriori informazioni, consultare la documentazione sull'argomento $orderby.
Limitazione dei risultati {#first-and-after}
Il $first parametro limita il numero di record restituiti in una richiesta.
GET /api/book?$first=5
Restituisce i primi cinque libri, ordinati per chiave primaria per impostazione predefinita.
È anche possibile usare $first=-1 per richiedere la dimensione massima configurata della pagina, che per impostazione predefinita è 100 elementi. Configurare questo limite con runtime.pagination.default-page-size nel file di configurazione.
Per altre informazioni, vedere il riferimento all'argomento $first.
Risultati continui
Per recuperare la pagina successiva, usare $after con il token di continuazione della risposta precedente.
GET /api/book?$first=5&$after={continuation-token}
Il $after token identifica dove è terminata l'ultima query.
Per ulteriori informazioni, vedere il riferimento all'argomento $after.
Selezione dei campi (proiezione)
Usare $select per controllare quali campi sono inclusi nella risposta.
GET /api/book?$select=id,title,price
Restituisce solo le colonne specificate.
Se un campo manca o non è accessibile, DAB restituisce 400 Bad Request.
Per altre informazioni, vedere il riferimento all'argomento $select.
Modifica dei dati
L'API REST supporta anche operazioni di creazione, aggiornamento ed eliminazione a seconda delle autorizzazioni dell'entità.
| metodo | Action |
|---|---|
POST |
Creare un nuovo elemento |
PUT |
Sostituire un elemento esistente (o crearne se mancante) |
PATCH |
Aggiornare un elemento esistente o crearne uno se mancante |
DELETE |
Rimuovere un elemento in base alla chiave primaria |
Importante
Il comportamento upsert (insert-if-missing) di PUT e PATCH funziona solo quando il database consente valori di chiave primaria espliciti. Per le tabelle con chiavi generate automaticamente, ad esempio le IDENTITY colonne in SQL Server o le SERIAL in PostgreSQL, un tentativo di usare un oggetto o una chiave inesistente restituisce PUT perché il database rifiuta inserimenti diretti in una colonna generata automaticamente. Usare POST per creare record in tabelle con chiavi generate automaticamente o usare PUT senza chiave e PATCH per consentire a DAB di assegnare automaticamente la chiave.
Creare un nuovo record
Usare POST per creare un nuovo elemento.
POST https://localhost:5001/api/book
Content-Type: application/json
{
"id": 2000,
"title": "Leviathan Wakes",
"year": 2011,
"pages": 577
}
Aggiorna un record esistente
Usare PATCH per aggiornare campi specifici in un elemento esistente.
PATCH https://localhost:5001/api/book/id/2000
Content-Type: application/json
{
"id": 2000,
"title": "Leviathan Wakes",
"year": 2011,
"pages": 577
}
Eliminare un record
Usare DELETE per rimuovere un elemento in base alla chiave primaria.
DELETE https://localhost:5001/api/book/id/2000
Percorsi REST avanzati con sottodirectory
Annotazioni
La funzionalità Generatore API dati descritta in questa sezione è disponibile nella versione 2.0 e successive. Per altre informazioni, vedere Novità della versione 2.0.
I percorsi REST di entità possono includere slash per creare segmenti URL simili a sottodirectory. Questa configurazione consente strutture di URL gerarchici più espressive per l'API.
Configurare un percorso di sottodirectory nella proprietà dell'entità rest.path :
{
"entities": {
"ShoppingCartItem": {
"source": "dbo.ShoppingCartItem",
"rest": {
"path": "shopping-cart/item"
}
}
}
}
Questa configurazione risulta nell'endpoint:
GET /api/shopping-cart/item
DAB usa la corrispondenza dei prefissi più lunghi per il routing, quindi i percorsi più specifici vengono confrontati prima di quelli più brevi. Per la sicurezza, la convalida blocca i modelli di attraversamento del percorso (ad esempio ..), le barre rovesciate e i separatori con codifica percentuale.
Per altre informazioni, vedere la configurazione del percorso REST.
PUT senza chiave e PATCH per le chiavi primarie generate automaticamente
Annotazioni
La funzionalità Generatore API dati descritta in questa sezione è disponibile nella versione 2.0 e successive. Per altre informazioni, vedere Novità della versione 2.0.
Quando tutte le colonne chiave primaria per un'entità vengono generate automaticamente (ad esempio, IDENTITY colonne in SQL Server), è possibile inviare PUT e PATCH richiedere senza specificare una chiave primaria nell'URL. DAB assegna automaticamente la chiave durante l'inserimento.
PUT /api/Book
Content-Type: application/json
{
"title": "My New Book",
"publisher_id": 1234
}
Questa richiesta crea un nuovo Book record con una chiave primaria generata automaticamente.
Regole per le operazioni senza chiave
- Tutte le colonne chiave primaria omesse devono essere generate automaticamente. Se una colonna chiave omessa non viene generata automaticamente, la richiesta ha esito negativo.
- Per le chiavi primarie composite, è comunque necessario specificare tutte le parti non generate automaticamente della chiave nell'URL.
- Le stored procedure non sono interessate da questa funzionalità. Continuano a usare la gestione dei propri parametri.
- Il documento OpenAPI riflette le operazioni senza chiave sul percorso dell'entità di base,
PUT /api/Bookad esempio senza segmenti chiave.
Compressione della risposta HTTP
Annotazioni
La funzionalità Generatore API dati descritta in questa sezione è disponibile nella versione 2.0 e successive. Per altre informazioni, vedere Novità della versione 2.0.
DAB supporta la compressione delle risposte HTTP per ridurre le dimensioni del payload e migliorare la velocità di trasferimento. Configurare la compressione nella runtime.compression sezione del file di configurazione:
{
"runtime": {
"compression": {
"level": "optimal"
}
}
}
Livelli di compressione disponibili:
| livello | Descrizione |
|---|---|
optimal |
Bilancia il rapporto di compressione e la velocità (consigliato per la maggior parte degli scenari) |
fastest |
Assegna priorità alla velocità di compressione rispetto al rapporto |
none |
Disabilita la compressione |
Per altre informazioni sulla configurazione della compressione, vedere Configurazione della compressione di runtime.