Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Richtlijnen voor het bijwerken van (meervoudige) geneste gegevens #613

Open
joeribekker opened this issue Oct 20, 2023 · 2 comments
Open
Labels
WG: Orkestratie issues regarding the Orkestration working group

Comments

@joeribekker
Copy link

joeribekker commented Oct 20, 2023

Om meer gegevens in 1x op te vragen of bij te werken zijn resources soms samengevoegd in een API. Dit is performance-efficient en soms ook handig vanuit transactie-perspectief. Ter illustratie:

GET /boek/9f84bac2-4e65-474a-a230-adfb070f3f15

Geeft een boek terug met 2 auteurs:

{
  "id": "9f84bac2-4e65-474a-a230-adfb070f3f15",
  "titel": "John and Jane",
  "auteur": [{
    "id": "80e08f36-befb-4125-9001-1c92c6fa5968",
    "naam": "John Doe"
   },
   {
    "id": "f7e6430d-fcf1-4052-a0ac-b6366f55fc9a",
    "naam": "Jane Doe"
 }]
}

Als ik dit boek wil aanpassen, kan ik doen:

PUT /boek/9f84bac2-4e65-474a-a230-adfb070f3f15 of PATCH variant

{
  "id": "9f84bac2-4e65-474a-a230-adfb070f3f15",
  "titel": "Johnny and Jane",
  "auteur": [{
    "id": "80e08f36-befb-4125-9001-1c92c6fa5968",
    "naam": "Johnny Doerak"
   }]
}

Duidelijk is dat de titel is aangepast (van John naar Johnny). Maar, de lijst van auteurs is ook gewijzigd. Wat betekent dit? Is de (relatie naar de) auteur "Jane Doe" verwijderd? Is de naam van de 1e auteur gewijzigd naar "Johnny Doerak"? Of heeft het ID enkel gewerkt als een identifier om de relatie naar de auteur te leggen (en wordt de naam genegeerd)?

Algemener: Gaat PUT over het geheel aan gegevens (waardoor het aannemelijker is dat de (relatie naar de) auteur "Jane Doe" is verwijderd, of enkel over het top-level object "boek"? Werkt PATCH op dit vlak anders? Mogen er geen niet-identificerende attributen in PUT/PATCH operaties voorkomen van geneste resources?

We kunnen allemaal een eigen interpretatie hebben van wat het correcte gedrag is, maar juist die discussie zou ik het liefst getackled hebben met een verwijzing naar de API-strategie.

Ik denk dat het goed is om wat richtlijnen te hebben van het typische gedrag van bovenstaande API-call. De OAS-specificatie is niet helder op dit vlak. Uiteraard kan van de richtlijnen afwijken in je specifieke API maar een richtlijn helpt de voorspelbaarheid voor gebruikers en implementatie bij ontwikkelaars.

@joeribekker joeribekker changed the title Richtlijnen voor het bijwerken van meervoudige geneste gegevens Richtlijnen voor het bijwerken van (meervoudige) geneste gegevens Oct 20, 2023
@mrtn78 mrtn78 added the WG: Orkestratie issues regarding the Orkestration working group label Oct 25, 2023
@mrtn78
Copy link
Collaborator

mrtn78 commented Oct 25, 2023

Dit lijkt me een punt wat we kunnen adresseren / oppakken in de nieuwe werkgroep orkestratie van @joostfarla

@sergei-maertens
Copy link
Contributor

Ga vooral spieken wat Kubernetes hier doet, zij hebben best een mooi model voor het toepassen van PATCH in verschillende "operation modes" op basis van de Content-Type header: https://kubernetes.io/docs/reference/using-api/api-concepts/#patch-and-apply

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
WG: Orkestratie issues regarding the Orkestration working group
Projects
None yet
Development

No branches or pull requests

3 participants