Skill utelatt felt fra null ved delvis oppdatering
En delvis oppdatering må uttrykke om feltet beholdes, erstattes eller fjernes.
En delvis oppdatering trenger en tydelig operasjonskontrakt. Utelatt felt og eksplisitt null kan bety forskjellige handlinger, men betydningen følger oppdateringsformatet. Vanlig JSON-syntaks gir ikke alene en regel om å beholde eller slette eksisterende opplysninger.
RFC 7396 definerer JSON Merge Patch. For en objektoppdatering under denne kontrakten beholdes felter som ikke omtales, nye verdier oppdaterer eller legger til felt, og null fjerner det aktuelle objektmedlemmet. Dette gjelder når tjenesten faktisk bruker dette formatet, med medietypen application/merge-patch+json.
Tre oppdateringer av samme prosjektpost
Syntetisk eksempel med lokale felter. Før hver separat prøve har objektet projectCode lik P-206 og status lik aktiv. Tabellen er ikke et API-eksempel fra et bestemt regnskapssystem.
| Merge Patch-prøve | ProjectCode etter prøven | Status etter prøven |
|---|---|---|
Bare status settes til avsluttet | P-206 beholdes | avsluttet |
projectCode settes til P-260 | P-260 | aktiv beholdes |
projectCode settes til null | Medlemmet fjernes | aktiv beholdes |
Den siste prøven lagrer ikke en kjent prosjektverdi lik tallet null. Den ber om fjerning av medlemmet under den angitte kontrakten. En tjeneste med en annen oppdateringsmodell kan ha andre regler.
Avklar hva klienten faktisk sender
Undersøk om klienten utelater et felt, sender tom tekst eller sender eksplisitt null. Et skjema som automatisk legger null i alle usynlige felter, kan utilsiktet be om fjerning av opplysninger brukeren ikke har redigert.
Prøv på et syntetisk objekt og sammenlign hele resultatet før og etter. Kontroller også nøstede objekter og lister dersom de inngår i tjenesten. JSON Merge Patch oppdaterer ikke enkelte listeelementer som om listen var et objekt; en listeverdi kan erstatte hele listen.
- Bekreft medietype og tjenestens dokumenterte kontrakt.
- Se på den faktiske meldingen, ikke bare skjermfeltene.
- Test utelatelse, ny tekstverdi og eksplisitt null separat.
- Undersøk om brukeren har rett til den ønskede endringen.
- Bevar førverdi, etterverdi og operasjonsgrunnlag.
Skill operasjonen fra import av ukjent verdi
En komplett registerimport og en delvis endringsforespørsel er forskjellige leveranser. En manglende kolonne i CSV skal ikke få Merge Patch-betydning uten en uttrykkelig avtale. Tilsvarende er et ukjent felt i en eksport ikke automatisk en ordre om sletting.
JSON Merge Patch er heller ikke egnet for alle modeller som trenger eksplisitt null som bevart domeneverdi. Avklar alternativ representasjon med tjenesteeieren når både «ukjent» og «fjern medlem» må kunne uttrykkes.
En oppdatering kan samtidig bygge på en foreldet tilstand. Undersøk derfor hvordan tjenesten håndterer versjon og samtidige endringer, slik at en velmenende endring ikke overskriver nyere opplysninger. Denne veiledningen hevder ingen støtte i et bestemt produkt.
Se sen kildeendring og sletteinformasjon.