Ikke-kompatibel endring
Definisjon
En endring i ett system som kan føre til feil i avhengige system.
Sett at man har følgende GraphQL API og ønsker å endre dette til å støtte flere språk, for eksempel som følge av press fra språkrådet:
type Query {
"""The Quote Of The Day. See [RFC 865](https://datatracker.ietf.org/doc/html/rfc865) for historical context."""
qotd: String
}
En ikke-kompatibel endring kan være noe ala følgende:
type Query {
"""The Quote Of The Day. See [RFC 865](https://datatracker.ietf.org/doc/html/rfc865) for historical context."""
qotd: Quote
}
type Quote {
nb: String
nn: String
en: String
}
Dersom det finnes konsumenter som påvirkes av den ikke-kompatible endringen så er endringen å anse som en ødeleggende endring.
En kompatibel endring vil derimot bevare eksisterende funksjonalitet samtidig som den innfører ny funksjonalitet:
type Query {
"""The Quote Of The Day in English. See [RFC 865](https://datatracker.ietf.org/doc/html/rfc865) for historical context."""
qotd: String
"""The Quote Of The Day in different languages."""
qotd2: Quote
}
type Quote {
nb: String
nn: String
en: String
}
Her vil eksisterende bruk fortsette å fungere. Dersom man ønsker å fase ut gammel funksjonalitet så kan man i tillegg varsle om dette slik at eksisterende brukere får anledning til å justere:
type Query {
"""The Quote Of The Day in English. See [RFC 865](https://datatracker.ietf.org/doc/html/rfc865) for historical context."""
qotd: String @deprecated(reason: "This field will be removed after <some future date>. Please switch to the `quotd2`-field since the future is multi-lingual.")
"""The Quote Of The Day in different languages."""
qotd2: Quote
}
type Quote {
nb: String
nn: String
en: String
}
Dette begrepet er nært knyttet til det engelske begrepet breaking change.