API ontwikkeling / Architectuur: voeg paginering van collecties artikel toe#733
API ontwikkeling / Architectuur: voeg paginering van collecties artikel toe#733terborg wants to merge 1 commit into
Conversation
|
|
@joepio, @joeribekker, zouden jullie dit wellicht willen reviewen? |
|
FYI @sanderke voor de Pagination Module van de API Design Rules |
|
@dvh benieuwd naar jouw mening. |
| en maximum; een lagere waarde is altijd mogelijk. | ||
| schema: | ||
| type: integer | ||
| minimum: 1 |
There was a problem hiding this comment.
"De API hanteert een eigen default en maximum"; deze zou ik dan ook uitdrukken in OAS
There was a problem hiding this comment.
Dat is een bewuste ontwerpkeuze (van het voorbeeld :-)). Als we maximum en default vastleggen in de OAS, wordt het contract dichtgetimmerd. Dat heeft nadelen voor backwards compatibility (zelfde consumer, nieuwere provider) of forwards compatibility (nieuwere consumer, zelfde provider):
De (voorbeeld) API is zo ontworpen dat de provider de controle houdt. Als een consumer limit=10000 meestuurt, weigert de provider niet met een foutmelding, maar geeft deze bijvoorbeeld gewoon 100 items terug. Als we maximum: 100 in OAS zetten, en beide partijen hebben een strikte OAS-validatie aanstaan (of er tussenin zitten), dan hebben we al snel een upgrade-hell.
Wat wel een idee zou zijn, is om bijv. de orde-grootte van de default en maximum in de description op te nemen waabij optimale performance verwacht kan worden. Dan blijft het contract flexibel en robuust tegen toekomstige wijzigingen.
|
Nice! Wellicht kunnen we het opknippen in het stukje over offset vs cursor paginering en welke wanneer te gebruiken en hoe dit in de API terugkomt. Wij gebruiken bijvoorbeeld Nu kunnen we hier die discussie gaan voeren op dit PR, maar tegelijkertijd wordt er ook gewerkt aan een Pagination module voor ADR waar de discussie eigenlijk thuishoort. Het stuk over offset vs cursor is generiek; dat kunnen we sowieso snel publiceren. Voor de vorm van die informatie bestaan verschillende smaakjes, die we of allemaal moeten beschrijven of volgens de ADR uitkomsten. |
|
De pagination module die morgen voor het eerst wordt besproken staat hier: https://github.com/Logius-standaarden/API-mod-pagination Voor concrete suggesties wat hier moet worden opgeschreven, maak gerust een issue aan. Dan kunnen we die meenemen in de discussie morgenochtend. |
Voegt een nieuw architectuurartikel toe over paginering van collecties in REST API's, met een vergelijking van offset-based en cursor-based paginering op het gebied van schaalbaarheid, page skew en willekeurige toegang.