REST-végpontok meghívása

A Data API Builder (DAB) egy RESTful webes API-t biztosít, amellyel táblákat, nézeteket és tárolt eljárásokat érhet el egy csatlakoztatott adatbázisból. Minden közzétett adatbázis-objektum entitásként van definiálva a futtatókörnyezet konfigurációjában.

Alapértelmezés szerint a DAB a KÖVETKEZŐ helyen üzemelteti a REST-végpontokat:

https://{base_url}/api/{entity}

Megjegyzés:

Minden elérési útösszetevő és lekérdezési paraméter megkülönbözteti a kis- és nagybetűket.

A Data API Builderben támogatott kulcsszavak

Fogalom REST Alkalmazás célja
Projection $select Adja meg, hogy mely mezőket adja vissza
Filtering $filter Sorok korlátozása feltétel szerint
Rendezés $orderby Rendezési sorrend meghatározása
Oldalméret $first Az elemek korlátozása oldalanként
Folytatás $after Folytatás az utolsó oldalról

Alapszintű struktúra

REST API meghívásához hozzon létre egy kérést az alábbi mintával:

{HTTP method} https://{base_url}/{rest-path}/{entity}

Példa az entitás összes rekordjának olvasására book :

GET https://localhost:5001/api/book

A válasz egy tömböt tartalmazó value JSON-objektum. A lapozási és hibainformációk csak akkor jelennek meg, ha vannak.

Megjegyzés:

Alapértelmezés szerint a DAB lekérdezésenként legfeljebb 100 elemet ad vissza, kivéve, ha másként van konfigurálva (runtime.pagination.default-page-size).

GET https://localhost:5001/api/book

Siker:

{
  "value": [
    { "id": 1, "title": "Dune", "year": 1965, "pages": 412 },
    { "id": 2, "title": "Foundation", "year": 1951, "pages": 255 }
  ]
}

Siker az oldalkezeléssel:

{
  "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"
}

Üres eredmény (az elem nem található):

{
  "value": []
}

Megjegyzés:

A nem létező elsődleges kulcsra irányuló GET-kérés egy üres value tömböt ad vissza, nem 404 Not Found.200 OK Keressen egy üres tömböt annak megállapításához, hogy az elem létezik-e.

Lekérdezéstípusok

Minden REST-entitás támogatja a kollekciós, valamint az egyrekordos olvasást is.

Operation Leírás
GET /api/{entity} Rekordlistát ad vissza
GET /api/{entity}/{primary-key-column}/{primary-key-value} Egy rekordot ad vissza elsődleges kulcs szerint

Példa egy rekord visszaadására:

GET /api/book/id/1010

Több értéket visszaadó példa:

GET /api/book

Eredmények szűrése

A lekérdezési $filter paraméterrel korlátozhatja a visszaadott rekordokat.

GET /api/book?$filter=title eq 'Foundation'

Ez a lekérdezés az összes olyan könyvet visszaadja, amelynek a címe "Foundation" (Alapozás) értékű.

A szűrők logikai operátorokat is tartalmazhatnak összetettebb lekérdezésekhez:

GET /api/book?$filter=year ge 1970 or title eq 'Dune'

További információ: $filter argumentum referenciája.

Találatok rendezése

A $orderby paraméter határozza meg a rekordok rendezésének módját.

GET /api/book?$orderby=year desc, title asc

Ez visszaadja a year szerint csökkenő sorrendben, majd a title alapján rendezett könyveket.

További információ: $orderby argumentum referenciája.

Eredmények korlátozása {#first-and-after}

A $first paraméter korlátozza, hogy egy kérelem hány rekordot ad vissza.

GET /api/book?$first=5

Ez az első öt könyvet adja vissza, alapértelmezés szerint az elsődleges kulcs szerint rendezve. A konfigurált maximális oldalméretet is kérheti $first=-1 , amely alapértelmezés szerint 100 elem. Konfigurálja ezt a korlátot runtime.pagination.default-page-size a konfigurációs fájlban.

További információ: $first argumentum referenciája.

Folyamatos eredmények

A következő oldal lekéréséhez használja $after az előző válaszból származó folytatási tokent.

GET /api/book?$first=5&$after={continuation-token}

A $after jogkivonat azonosítja, hogy hol fejeződött be az utolsó lekérdezés. További információ: $after argumentum referenciája.

Mezőválasztás (projekció)

A válaszban szereplő mezők szabályozására használható $select .

GET /api/book?$select=id,title,price

Ez csak a megadott oszlopokat adja vissza. Ha egy mező hiányzik vagy nem érhető el, a DAB ad vissza 400 Bad Request.

További információ: $select argumentum referenciája.

Adatok módosítása

A REST API az entitásengedélyek függvényében támogatja a létrehozási, frissítési és törlési műveleteket is.

Módszer Action
POST Új elem létrehozása
PUT Meglévő elem cseréje (vagy ha hiányzik a létrehozás)
PATCH Meglévő elem frissítése (vagy ha hiányzik a létrehozás)
DELETE Elem eltávolítása elsődleges kulcs alapján

Fontos

Az upsert (insert-if-missing) viselkedése PUTPATCH csak akkor működik, ha az adatbázis explicit elsődleges kulcsértékeket engedélyez. Az automatikusan generált kulcsokkal rendelkező táblák esetén (mint például az SQL Server IDENTITY oszlopaiban vagy a PostgreSQL SERIAL oszlopaiban) egy PUT vagy PATCH egy nem létező kulcshoz a 404 Not Found értéket ad vissza, mivel az adatbázis elutasítja az explicit beszúrásokat az automatikusan generált oszlopokba. Rekordokat POST hozhat létre automatikus kulcsokkal rendelkező táblákon, vagy kulcs nélküli PUT és PATCH használatával lehetővé teszi, hogy a DAB automatikusan hozzárendelje a kulcsot.

Új rekord létrehozása

Új elem létrehozásához használható POST .

POST https://localhost:5001/api/book
Content-Type: application/json

{
  "id": 2000,
  "title": "Leviathan Wakes",
  "year": 2011,
  "pages": 577
}

Egy létező rekord frissítése

Egy meglévő elem adott mezőinek frissítésére használható PATCH .

PATCH https://localhost:5001/api/book/id/2000
Content-Type: application/json

{
  "id": 2000,
  "title": "Leviathan Wakes",
  "year": 2011,
  "pages": 577
}

Rekord törlése

Használja a DELETE-t egy elem elsődleges kulcs szerinti eltávolításához.

DELETE https://localhost:5001/api/book/id/2000

Speciális REST-útvonalak alkönyvtárakkal

Megjegyzés:

Az ebben a szakaszban ismertetett Data API Builder 2.0 funkció jelenleg előzetes verzióban érhető el, és az általános rendelkezésre állás előtt változhat. További információ: A 2.0-s verzió újdonságai.

Az entitás REST útvonalai tartalmazhatnak perjeleket, hogy alkönyvtár stílusú URL-szegmenseket hozzanak létre. Ez a konfiguráció kifejezőbb és hierarchikusabb URL-struktúrákat tesz lehetővé az API-hoz.

Az entitás rest.path tulajdonságában egy alkönyvtár elérési útját konfigurálja:

{
  "entities": {
    "ShoppingCartItem": {
      "source": "dbo.ShoppingCartItem",
      "rest": {
        "path": "shopping-cart/item"
      }
    }
  }
}

Ez a konfiguráció a végpontot eredményezi:

GET /api/shopping-cart/item

A DAB a leghosszabb előtag-megfeleltetéseket használja az útválasztáshoz, így a rövidebbek előtt konkrétabb útvonalakat kell egyeztetni. A biztonság érdekében az érvényesítés blokkolja az elérési utak bejárási mintáit (például ..), a visszaperjeleket és a százalékban kódolt elválasztókat.

További információkért tekintse meg a REST-útvonal konfigurációját.

Kulcs nélküli PUT és PATCH az automatikusan létrehozott elsődleges kulcsokhoz

Megjegyzés:

Az ebben a szakaszban ismertetett Data API Builder 2.0 funkció jelenleg előzetes verzióban érhető el, és az általános rendelkezésre állás előtt változhat. További információ: A 2.0-s verzió újdonságai.

Ha egy entitás összes elsődleges kulcsoszlopa automatikusan létrejön (például IDENTITY az SQL Server oszlopai), az URL-címben szereplő elsődleges kulcs megadása nélkül is küldhet PUT és PATCH kérhet. A DAB automatikusan hozzárendeli a kulcsot a beszúrás során.

PUT /api/Book
Content-Type: application/json

{
  "title": "My New Book",
  "publisher_id": 1234
}

Ez a kérés létrehoz egy új Book rekordot egy automatikusan létrehozott elsődleges kulccsal.

Kulcs nélküli műveletek szabályai

  • Az összes kihagyott elsődleges kulcsoszlopot automatikusan létre kell hozni. Ha a kihagyott kulcsoszlop nem automatikusan jön létre, a kérés meghiúsul.
  • Összetett elsődleges kulcsok esetén továbbra is meg kell adnia a kulcs nem automatikusan létrehozott részeit az URL-címben.
  • A tárolt eljárásokat ez a funkció nem érinti. Továbbra is saját paraméterkezelést használnak.
  • Az OpenAPI-dokumentum az alapentitási útvonal kulcs nélküli műveleteit tükrözi (például PUT /api/Book kulcsszegmensek nélkül).

HTTP-választömörítés

Megjegyzés:

Az ebben a szakaszban ismertetett Data API Builder 2.0 funkció jelenleg előzetes verzióban érhető el, és az általános rendelkezésre állás előtt változhat. További információ: A 2.0-s verzió újdonságai.

A DAB támogatja a HTTP-választömörítést a hasznos adatok méretének csökkentése és az átviteli sebesség javítása érdekében. Konfigurálja a tömörítést a runtime.compression konfigurációs fájl szakaszában:

{
  "runtime": {
    "compression": {
      "level": "optimal"
    }
  }
}

Elérhető tömörítési szintek:

szint Leírás
optimal Tömörítési arány és sebesség kiegyensúlyozása (a legtöbb forgatókönyv esetében ajánlott)
fastest Rangsorolja a tömörítési sebességet az arányhoz viszonyítva
none A tömörítés letiltása

A tömörítés konfigurálásáról további információt a futtatókörnyezeti tömörítés konfigurálásával kapcsolatban talál.