Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tvůrce rozhraní DAB (Data API Builder) poskytuje webové rozhraní RESTful, které umožňuje přístup k tabulkám, zobrazením a uloženým procedurami z připojené databáze. Každý vystavený databázový objekt je definován jako entita v konfiguraci modulu runtime.
Ve výchozím nastavení DAB hostuje koncové body REST na adrese:
https://{base_url}/api/{entity}
Poznámka:
U všech komponent cesty a parametrů dotazu se rozlišují malá a velká písmena.
Klíčová slova podporovaná v Tvůrci rozhraní Data API
| Koncepce | REST | Purpose |
|---|---|---|
| Projekce | $select | Vyberte pole, která se mají vrátit |
| Filtrování | $filter | Omezení řádků podle podmínky |
| Řazení | $orderby | Definování pořadí řazení |
| Velikost stránky | $first | Omezení položek na stránku |
| Pokračování | $after | Pokračovat z poslední stránky |
Základní struktura
Pokud chcete volat rozhraní REST API, vytvořte požadavek pomocí tohoto vzoru:
{HTTP method} https://{base_url}/{rest-path}/{entity}
Příklad čtení všech záznamů z book entity:
GET https://localhost:5001/api/book
Odpověď je objekt JSON s polem value . Stránkování a informace o chybách se zobrazí pouze v případě, že je to možné.
Poznámka:
Ve výchozím nastavení daB vrátí až 100 položek na dotaz, pokud není nakonfigurovaný jinak (runtime.pagination.default-page-size).
GET https://localhost:5001/api/book
Úspěch:
{
"value": [
{ "id": 1, "title": "Dune", "year": 1965, "pages": 412 },
{ "id": 2, "title": "Foundation", "year": 1951, "pages": 255 }
]
}
Úspěch se stránkováním:
{
"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"
}
Prázdný výsledek (položka nebyla nalezena):
{
"value": []
}
Poznámka:
Požadavek GET na neexistující primární klíč se vrátí 200 OK s prázdným value polem, nikoli 404 Not Found. Zkontrolujte prázdné pole a určete, jestli položka existuje.
Typy dotazů
Každá entita REST podporuje čtení kolekce i jednoho záznamu.
| Operation | Description |
|---|---|
GET /api/{entity} |
Vrátí seznam záznamů. |
GET /api/{entity}/{primary-key-column}/{primary-key-value} |
Vrátí jeden záznam podle primárního klíče. |
Příklad vrácení jednoho záznamu:
GET /api/book/id/1010
Příklad vracející mnoho dat:
GET /api/book
Filtrování výsledků
Pomocí parametru $filter dotazu omezte, které záznamy se vrátí.
GET /api/book?$filter=title eq 'Foundation'
Tento dotaz vrátí všechny knihy, jejichž název je "Foundation."
Filtry můžou zahrnovat logické operátory pro složitější dotazy:
GET /api/book?$filter=year ge 1970 or title eq 'Dune'
Další informace najdete v referenci argumentu $filter.
Řazení výsledků
Parametr $orderby definuje způsob řazení záznamů.
GET /api/book?$orderby=year desc, title asc
Vrátí knihy seřazené podle year sestupně, pak podle title.
Další informace najdete v referenčním $orderby argumentu.
Omezení výsledků :{#first-and-after}
Parametr $first omezuje počet vrácených záznamů v jednom požadavku.
GET /api/book?$first=5
Tím se vrátí prvních pět knih seřazených podle primárního klíče ve výchozím nastavení.
Můžete také použít $first=-1 k vyžádání nakonfigurované maximální velikosti stránky, která má výchozí hodnotu 100 položek. Tento limit nakonfigurujte v konfiguračním runtime.pagination.default-page-size souboru.
Další informace najdete v referenci $first argumentu.
Pokračování výsledků
Pokud chcete načíst další stránku, použijte $after s tokenem pro pokračování z předchozí odpovědi.
GET /api/book?$first=5&$after={continuation-token}
Token $after identifikuje, kde byl poslední dotaz ukončen.
Další informace najdete v referenčním $after argumentu.
Výběr pole (projekce)
Pomocí $select určíte, která pole jsou zahrnuta v odpovědi.
GET /api/book?$select=id,title,price
Tím se vrátí pouze zadané sloupce.
Pokud pole chybí nebo není přístupné, DAB vrátí 400 Bad Request.
Další informace najdete v referenčním $select argumentu.
Úprava dat
Rozhraní REST API také podporuje operace vytváření, aktualizace a odstraňování v závislosti na oprávněních entity.
| Metoda | Action |
|---|---|
POST |
Vytvoření nové položky |
PUT |
Nahrazení existující položky (nebo vytvoření, pokud chybí) |
PATCH |
Aktualizace existující položky (nebo vytvoření, pokud chybí) |
DELETE |
Odebrání položky podle primárního klíče |
Důležité
Chování funkce upsert (insert-if-missing) u PUT a PATCH funguje pouze v případě, že databáze umožňuje explicitní hodnoty primárního klíče. U tabulek s automaticky vygenerovanými klíči (například IDENTITY sloupce v SQL Serveru nebo SERIAL v PostgreSQL) pokus o PATCH nebo 404 Not Found do neexistujícího klíče vrátí PUT, protože databáze odmítne explicitní vložení do automaticky generovaného sloupce. Použijte POST k vytváření záznamů v tabulkách s automaticky vygenerovanými klíči, nebo použijte bezklíčové operace PUT a PATCH k automatickému přiřazení klíčů systémem DAB.
Vytvoření nového záznamu
Slouží POST k vytvoření nové položky.
POST https://localhost:5001/api/book
Content-Type: application/json
{
"id": 2000,
"title": "Leviathan Wakes",
"year": 2011,
"pages": 577
}
Aktualizovat existující záznam
Slouží PATCH k aktualizaci konkrétních polí u existující položky.
PATCH https://localhost:5001/api/book/id/2000
Content-Type: application/json
{
"id": 2000,
"title": "Leviathan Wakes",
"year": 2011,
"pages": 577
}
Odstranění záznamu
Použijte DELETE k odebrání položky podle primárního klíče.
DELETE https://localhost:5001/api/book/id/2000
Pokročilé cesty REST s podadresáři
Poznámka:
Funkce tvůrce rozhraní Data API 2.0 popsané v této části jsou aktuálně ve verzi Preview a můžou se změnit před obecnou dostupností. Další informace najdete v tématu Co je nového ve verzi 2.0.
Cesty REST pro entity mohou zahrnovat lomítka k vytvoření segmentů adres URL ve stylu podadresáře. Tato konfigurace umožňuje pro vaše rozhraní API výraznější hierarchické struktury adres URL.
Nakonfigurujte cestu podadresáře ve vlastnosti entity rest.path :
{
"entities": {
"ShoppingCartItem": {
"source": "dbo.ShoppingCartItem",
"rest": {
"path": "shopping-cart/item"
}
}
}
}
Výsledkem této konfigurace je koncový bod:
GET /api/shopping-cart/item
Jazyk DAB používá pro směrování nejdelší porovnávání předpon, takže se před kratšími cestami shodují konkrétnější cesty. Kvůli bezpečnosti, ověřování blokuje vzory procházení cest (například ..), zpětná lomítka a oddělovače s procentovým kódováním.
Další informace najdete v konfiguraci cesty REST.
PUT a PATCH bez vyžadování klíčů pro automaticky generované primární klíče
Poznámka:
Funkce tvůrce rozhraní Data API 2.0 popsané v této části jsou aktuálně ve verzi Preview a můžou se změnit před obecnou dostupností. Další informace najdete v tématu Co je nového ve verzi 2.0.
Pokud jsou všechny sloupce primárního klíče pro entitu automaticky generované (například IDENTITY sloupce v SQL Serveru), můžete odesílat PUT a PATCH požadavky bez zadání primárního klíče v adrese URL. DAB automaticky přiřazuje klíč během vkládání.
PUT /api/Book
Content-Type: application/json
{
"title": "My New Book",
"publisher_id": 1234
}
Tento požadavek vytvoří nový Book záznam s automaticky vygenerovaným primárním klíčem.
Pravidla pro operace bez klíčů
- Všechny vynechané sloupce primárního klíče musí být automaticky vygenerovány. Pokud některý vynechaný klíčový sloupec není automaticky vygenerovaný, požadavek selže.
- U složených primárních klíčů musíte do adresy URL zadat všechny negenerované části klíče, které nejsou automaticky generovány.
- Tato funkce nemá vliv na uložené procedury. Nadále používají vlastní zpracování parametrů.
- Dokument OpenAPI odráží bezklíčové operace na základní cestě entity (například
PUT /api/Bookbez klíčových segmentů).
Komprese odpovědí HTTP
Poznámka:
Funkce tvůrce rozhraní Data API 2.0 popsané v této části jsou aktuálně ve verzi Preview a můžou se změnit před obecnou dostupností. Další informace najdete v tématu Co je nového ve verzi 2.0.
DAB podporuje kompresi odpovědí HTTP, aby se snížily velikosti datových částí a zlepšily rychlost přenosu. Konfigurace komprese v runtime.compression části konfiguračního souboru:
{
"runtime": {
"compression": {
"level": "optimal"
}
}
}
Dostupné úrovně komprese:
| Úroveň | Description |
|---|---|
optimal |
Vyrovnává poměr komprese a rychlost (doporučeno pro většinu scénářů) |
fastest |
Určuje prioritu rychlosti komprese oproti poměru. |
none |
Zakáže kompresi. |
Další informace o konfiguraci komprese naleznete v tématu Konfigurace komprese modulu runtime.