본문 바로가기

AI Feed
Tech & Product/AI, 더 깊게

JSON Patch

REST API를 개발할 때 CRUD중 create, read, delete의 dto 설계는 비교적 간단하나 update는 다양한 방법이 가능하기 때문에 고민되는 부분입니다. 이 때 사용할 수 있는 JSON Patch를 소개합니다.

JSON Patch

JSON Patch는 json의 수정을 표현합니다. 따라서 REST API 설계시 PATCH 메소드와 함께 사용하면 update 기능을 구현할 수 있습니다.

예제

JSON Document

{
  "a": "a",
  "b": "b"
}

JSON Patch

[
  { "op": "add", "path": "/c", "value": "c" },
  { "op": "remove", "path": "/a" }
]

결과

{
  "b": "b",
  "c": "c"
}

지원하는 Operation

Add

{ "op": "add", "path": "/c", "value": "c" }
JSON 오브젝트 또는 배열에 값을 추가합니다. 배열의 경우 주어진 인덱스의 직전에 삽입됩니다.

배열에서 마지막에 삽입하고 싶다면 -을 사용하면 됩니다.

Remove

{ "op": "remove", "path": "/a" }
JSON 오브젝트 또는 배열에서 값을 삭제합니다

Replace

{ "op": "replace", "path": "/a", "value": "c" }
JSON 오브젝트 또는 배열에서 값을 교체합니다.

Copy

{ "op": "copy", "from": "/a", "path": "/d" }
from위치의 값을 path 위치로 복사합니다.

Move

{ "op": "move", "from": "/a", "path": "/d" }
from위치의 값을 path 위치로 이동시킵니다. 따라서 이후 from 위치의 값은 삭제됩니다.

Test

{ "op": "test", "path": "/a", "value": "a" }
path위치의 값이 value의 값과 같은지 확인합니다.
만약 같지 않다면 JSON Patch는 유효하지 않는것으로 처리됩니다.