Mezőkijelölés (vetítés) a REST-ben

A kivetítés segítségével csak azt adja vissza, amire az ügyfélnek ténylegesen szüksége van. A kisebb hasznos adatok javítják a teljesítményt, csökkentik a hálózati költségeket, és csökkentik az ügyféloldali elemzési többletterhelést. A Data API Builder (DAB) a lekérdezési paraméteren keresztül valósítja meg a REST-re vonatkozó előrejelzést $select .

Megjegyzés:

A REST-lekérdezési paraméternevek (beleértve a kis- és nagybetűket is $select) megkülönböztetik. A mezőnevek a konfigurált vagy közzétett adatok alapján megkülönböztetik a kis- és nagybetűket is.

Nyissa meg a dokumentum GraphQL-verzióját.

Alapszintű kijelölés

Pattern

GET /api/{entity}?$select=FieldA,FieldB,FieldC

Ha $select nincs megadva, a DAB minden olyan mezőt ad vissza, amely olvasásra jogosult a hívó szerepkörében (a konfiguráció és exclude a mezőszintű engedélyek függvényébeninclude). Nincs olyan helyettesítő token, mint a *; kihagyás $select a teljes engedélyezett alakzat kérése.

Példák

# Return all accessible fields
GET /api/author

# Return only first_name
GET /api/author?$select=first_name

# Return only first_name and last_name
GET /api/author?$select=first_name,last_name

Belső és válaszoszlopok

Nem kell elsődleges kulcsot vagy mezőket rendelnie. Ha nincs megadva, azok nem jelennek meg a JSON-válaszban. A DAB azonban belsőleg lekérheti a biztonsági szabályzatok (sorszintű szűrők, mezőmaszkok) kikényszerítéséhez és a lapozási kurzorok ($after / nextLink) kezeléséhez szükséges további oszlopokat.

Megjegyzés:

Ezeket a belsőleg beolvasott oszlopokat a rendszer a válasz előtt eltávolítja, kivéve, ha kifejezetten kéri őket.

Example

GET /api/book?$select=id,title&$orderby=publisher_id desc&$first=5

Fogalmi SQL

SELECT TOP (6) -- first (5) + 1 probe row for paging
  [b].[id],
  [b].[sku_title] AS title
FROM dbo.books AS [b]
ORDER BY [b].[publisher_id] DESC, [b].[id] ASC;

Válasz

{
  "value": [
    { "id": 101, "title": "Example 1" },
    { "id": 77,  "title": "Example 2" },
    { "id": 42,  "title": "Example 3" },
    { "id": 33,  "title": "Example 4" },
    { "id": 5,   "title": "Example 5" }
  ],
  "nextLink": "..."
}

További információ a lapozásról és a kulcsszó utániról.

A további belső oszlopok és a hatodik mintavételi sor nem látható a hasznos adatban.

Tárolt eljárások

A tárolt eljárás által támogatott entitások $select esetében a rendszer nem vetítési záradékként értelmezi. Ehelyett a lekérdezési sztringkulcs-/értékpárok (kivéve a felismert rendszerparamétereket, például $filter, $orderbystb.) tárolt eljárásparaméterekként kezelik. $select nincs hatása; az eljárás eredményhalmaza határozza meg az alakzatot.

Konfigurációs példa

{
  "runtime": {
    "pagination": {
      "default-page-size": 100,
      "max-page-size": 100000
    }
  },
  "entities": {
    "Book": {
      "source": {
        "type": "table",
        "object": "dbo.books"
      },
      "mappings": {
        "sku_title": "title",
        "sku_price": "price"
      },
      "relationships": {
        "book_category": {
          "cardinality": "one",
          "target.entity": "Category",
          "source.fields": [ "category_id" ],
          "target.fields": [ "id" ]
        }
      }
    },
    "Category": {
      "source": {
        "type": "table",
        "object": "dbo.categories"
      },
      "relationships": {
        "category_books": {
          "cardinality": "many",
          "target.entity": "Book",
          "source.fields": [ "id" ],
          "target.fields": [ "category_id" ]
        }
      }
    }
  }
}

Lásd még

Concept REST GraphQL Cél
Projection $select Elemek Adja meg, hogy mely mezőket adja vissza
Filtering $filter szűrő Sorok korlátozása feltétel szerint
Rendezés $orderby orderBy Rendezési sorrend meghatározása
Oldalméret $first first Az elemek számának korlátozása oldalanként
Folytatás $after után Folytatás az utolsó oldalról kurzor használatával

Megjegyzés:

A REST-kulcsszavak az OData-konvenciók követésével $kezdődnek.