Jeden i drugi protokół są do siebie bardzo podobne i służą do tego samego.
Jednak działają nieco inaczej...
JSON Patch
application/json-patch+json opisany przez RFC6902 przypomina transakcje bazy danych. Jest to zbiór operacji (zamień, dodaj, usuń, skopiuj), które mogą być przeprowadzone na dokumencie.
application/merge-patch+json opisany przez RFC7386 zawiera docelową wersję dokumentu. Wartość null jest specjalnie traktowana i służy do usuwania elementów.
Jak widać format JSON Merge Patch jest dużo mniejszy i ma pierwszy rzut oka wydaje się lepszym rozwiązaniem.
Niestety nie ma obsługi dodawania i usuwania elementów z kolekcji (array). Trudniejsze jest przechowywanie takiej operacji w bazie danych SQL. Chyba, że korzystamy z NoSQL, np. MongoDb
Dlatego format musimy wybrać zależnie od konkretnego przypadku. Jeśli wystarczy nam zmiana wartości to JSON Merge Patch może okazać się lepszym rozwiązaniem. Przy bardziej złożonych operacjach, np. dodawanie/usuwanie/powielanie elementów polecam JSON Patch.
Warto dodać, że w .NET Core 5 jest obsługa JSON Patch za pomocą standardowej paczki Microsoft.AspNetCore.JsonPatch.
Natomiast JSON Merge Patch nie jest obsługiwany natomiast można skorzystać z paczki Morcatko.AspNetCore.JsonMergePatch
Jeden i drugi protokół są do siebie bardzo podobne i służą do tego samego. Jednak działają nieco inaczej...
JSON Patch
application/json-patch+json opisany przez RFC6902 przypomina transakcje bazy danych. Jest to zbiór operacji (zamień, dodaj, usuń, skopiuj), które mogą być przeprowadzone na dokumencie.
Na przykład
JSON Merge Patch
application/merge-patch+json opisany przez RFC7386 zawiera docelową wersję dokumentu. Wartość null jest specjalnie traktowana i służy do usuwania elementów.
Jak widać format JSON Merge Patch jest dużo mniejszy i ma pierwszy rzut oka wydaje się lepszym rozwiązaniem. Niestety nie ma obsługi dodawania i usuwania elementów z kolekcji (array). Trudniejsze jest przechowywanie takiej operacji w bazie danych SQL. Chyba, że korzystamy z NoSQL, np. MongoDb
Dlatego format musimy wybrać zależnie od konkretnego przypadku. Jeśli wystarczy nam zmiana wartości to JSON Merge Patch może okazać się lepszym rozwiązaniem. Przy bardziej złożonych operacjach, np. dodawanie/usuwanie/powielanie elementów polecam JSON Patch.
Warto dodać, że w .NET Core 5 jest obsługa JSON Patch za pomocą standardowej paczki Microsoft.AspNetCore.JsonPatch. Natomiast JSON Merge Patch nie jest obsługiwany natomiast można skorzystać z paczki Morcatko.AspNetCore.JsonMergePatch
Polecam artykuł: https://erosb.github.io/post/json-patch-vs-merge-patch/