Megosztás a következőn keresztül:


Lapozás REST-ben $after

A lapozás a nagy adathalmazokat kisebb, kezelhető oldalakra szűkíti. A REST-ben a Data API Builder (DAB) a lekérdezési paramétert használja a $afterkulcskészletek lapozásához, és stabil és hatékony bejárást biztosít a rendezett eredményeken keresztül. Minden jogkivonat az előző oldal utolsó rekordjának pozícióját jelöli, így a következő kérés ettől a ponttól folytatódhat. Az eltolásos lapozástól eltérően a billentyűkészlet lapozása megakadályozza a hiányzó vagy duplikált sorokat, amikor az adatok megváltoznak a kérések között.

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

Gyors áttekintés

Concept Description
$after Az előző kérésből visszaadott átlátszatlan folytatási jogkivonat
$first A beolvasandó rekordok maximális száma oldalanként
nextLink A következő oldal URL-címe tartalmazza $after

Egyszerű lapozás

Ebben a példában az első három könyvet kapjuk meg.

HTTP-kérelem

GET /api/books?$first=3

Fogalmi SQL

SELECT TOP (3)
  id,
  sku_title AS title
FROM dbo.books
ORDER BY id ASC;

Mintaválasz

{
  "value": [
    { "id": 1, "title": "Dune" },
    { "id": 2, "title": "Foundation" },
    { "id": 3, "title": "Hyperion" }
  ],
  "nextLink": "/api/books?$first=3&$after=eyJpZCI6M30="
}

Megjegyzés:

Ha next-link-relative=true konfigurációban van, nextLink relatív elérési utat tartalmaz, ellenkező esetben ez egy abszolút URL-cím.

Folytatás a $after

A $after paraméter a következő oldal folytatási jogkivonatát adja meg. Az érték egy base64 kódolású sztring, amely az előző oldal utolsó rekordját jelöli.

Figyelmeztetés

$after egy átlátszatlan jogkivonatot hordoz, amely azonosítja, hogy hol végződött az utolsó oldal. A jogkivonatokat nem módosíthatóként kezelje, és soha ne próbálja meg létrehozni vagy módosítani őket.

Ebben a példában a következő három könyvet kapjuk meg az utolsó oldal jogkivonata után.

HTTP-kérelem

GET /api/books?$first=3&$after=eyJpZCI6M30=

Fogalmi SQL

SELECT TOP (3)
  id,
  sku_title AS title
FROM dbo.books
WHERE id > 3
ORDER BY id ASC;

Mintaválasz

{
  "value": [
    { "id": 4, "title": "I, Robot" },
    { "id": 5, "title": "The Left Hand of Darkness" },
    { "id": 6, "title": "The Martian" }
  ],
  "nextLink": "/api/books?$first=3&$after=eyJpZCI6Nn0="
}

Az adatok vége

Ha nextLink hiányzik, nincs több beolvasandó rekord. Az utolsó lap válasza csak egy tömböt valuenextLinktartalmaz.

Mintaválasz

{
  "value": [
    { "id": 7, "title": "Rendezvous with Rama" },
    { "id": 8, "title": "The Dispossessed" }
  ]
}

Megjegyzés:

Bármely séma- vagy rendezési módosítás érvényteleníti a korábban kiadott jogkivonatokat. Az ügyfeleknek újra kell indítaniuk a lapozást az első oldalról.

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.