{"id":1667,"date":"2026-04-10T10:41:19","date_gmt":"2026-04-10T10:41:19","guid":{"rendered":"https:\/\/wayhope.kro.kr\/?p=1667"},"modified":"2026-08-31T07:32:38","modified_gmt":"2026-08-31T07:32:38","slug":"graphql-%ed%95%b5%ec%8b%ac-%ec%a0%95%eb%a6%ac","status":"publish","type":"post","link":"https:\/\/wayhope.kro.kr\/?p=1667","title":{"rendered":"GraphQL \ud575\uc2ec \uc815\ub9ac"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">REST API\ub97c \uc0ac\uc6a9\ud558\ub2e4 \ubcf4\uba74 API \uc124\uacc4\uac00 \uc0dd\uac01\ubcf4\ub2e4 \ubcf5\uc7a1\ud574\uc9c0\ub294 \uc21c\uac04\uc774 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud654\uba74 \ud558\ub098\ub97c \uad6c\uc131\ud558\uae30 \uc704\ud574 \uc5ec\ub7ec API\ub97c \ud638\ucd9c\ud574\uc57c \ud558\uac70\ub098, \ubc18\ub300\ub85c \ud558\ub098\uc758 API\uac00 \ub108\ubb34 \ub9ce\uc740 \ub370\uc774\ud130\ub97c \ubc18\ud658\ud574\uc11c \ud074\ub77c\uc774\uc5b8\ud2b8\uc5d0\uc11c \ud544\uc694 \uc5c6\ub294 \ub370\uc774\ud130\ub97c \ubc84\ub9ac\ub294 \uacbd\uc6b0\uac00 \uc0dd\uae34\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL\uc740 \uc774\ub7f0 \ubb38\uc81c\ub97c \ub2e4\ub978 \ubc29\uc2dd\uc73c\ub85c \ud574\uacb0\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">REST\uac00 \uc11c\ubc84\uc5d0\uc11c \ubbf8\ub9ac \uc815\uc758\ud55c \uc5ec\ub7ec Endpoint\ub97c \uc81c\uacf5\ud558\ub294 \ubc29\uc2dd\uc774\ub77c\uba74, GraphQL\uc740 \ud558\ub098\uc758 Endpoint\ub97c \ud1b5\ud574 \ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \ud544\uc694\ud55c \ub370\uc774\ud130\uc758 \uad6c\uc870\ub97c \uc9c1\uc811 \uc694\uccad\ud558\ub3c4\ub85d \ub9cc\ub4e0\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL\uc744 \uc774\ud574\ud560 \ub54c \uac00\uc7a5 \uba3c\uc800 \ubd10\uc57c \ud560 \ubd80\ubd84\ub3c4 \uc774 \ucc28\uc774\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">REST API\uc640 GraphQL<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">REST API\uc5d0\uc11c\ub294 \ubcf4\ud1b5 \ub9ac\uc18c\uc2a4\ub97c \uae30\uc900\uc73c\ub85c Endpoint\ub97c \ub098\ub208\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GET \/users\/123\nGET \/users\/123\/characters\nGET \/characters\/456\/items\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud654\uba74\uc5d0\uc11c \ub2e4\uc74c\uacfc \uac19\uc740 \ub370\uc774\ud130\uac00 \ud544\uc694\ud558\ub2e4\uace0 \ud574\ubcf4\uc790.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\uc720\uc800 \uc774\ub984\n\uce90\ub9ad\ud130 \uc774\ub984\n\uce90\ub9ad\ud130 \ub808\ubca8\n\uc7a5\ucc29 \uc544\uc774\ud15c\n\uc544\uc774\ud15c \uc774\ub984\n\uc544\uc774\ud15c \uacf5\uaca9\ub825\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">REST\uc5d0\uc11c\ub294 \ud544\uc694\ud55c \ub370\uc774\ud130\ub97c \uac00\uc838\uc624\uae30 \uc704\ud574 \uc5ec\ub7ec API\ub97c \ud638\ucd9c\ud574\uc57c \ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL\uc5d0\uc11c\ub294 \ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \uc6d0\ud558\ub294 \ub370\uc774\ud130 \uad6c\uc870\ub97c \ud558\ub098\uc758 Query\ub85c \ud45c\ud604\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>query {\n  user(id: 123) {\n    name\n    characters {\n      name\n      level\n      items {\n        name\n        attack\n      }\n    }\n  }\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc11c\ubc84\ub294 Query\uc5d0 \ud3ec\ud568\ub41c \ud544\ub4dc\ub97c \uae30\uc900\uc73c\ub85c \ub370\uc774\ud130\ub97c \ubc18\ud658\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"data\": {\n    \"user\": {\n      \"name\": \"Player1\",\n      \"characters\": &#91;\n        {\n          \"name\": \"Knight\",\n          \"level\": 50,\n          \"items\": &#91;\n            {\n              \"name\": \"Sword\",\n              \"attack\": 120\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">REST\uc5d0\uc11c\ub294 \uc11c\ubc84\uac00 Endpoint\uc640 \uc751\ub2f5 \uad6c\uc870\ub97c \uacb0\uc815\ud558\ub294 \ube44\uc911\uc774 \ud06c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL\uc5d0\uc11c\ub294 \uc11c\ubc84\uac00 Schema\ub97c \uc81c\uacf5\ud558\uace0 \ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \ud544\uc694\ud55c \ud544\ub4dc\ub97c \uc120\ud0dd\ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">GraphQL\uc758 \uae30\ubcf8 \uad6c\uc870<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL\uc744 \uad6c\uc131\ud558\ub294 \ud575\uc2ec \uc694\uc18c\ub294 Schema, Query, Mutation, Subscription, Resolver\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; Query \/ Mutation \/ Subscription -&gt; GraphQL Server -&gt; Schema -&gt; Resolver -&gt; Service \/ Repository \/ Data Source\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Schema<\/strong>\ub294 \uc5b4\ub5a4 \ub370\uc774\ud130\uc640 \uc791\uc5c5\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294\uc9c0 \uc815\uc758\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Query<\/strong>\ub294 \ub370\uc774\ud130\ub97c \uc870\ud68c\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Mutation<\/strong>\uc740 \ub370\uc774\ud130\ub97c \ubcc0\uacbd\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Subscription<\/strong>\uc740 \uc11c\ubc84\uc5d0\uc11c \ubc1c\uc0dd\ud558\ub294 \uc774\ubca4\ud2b8\ub97c \uc2e4\uc2dc\uac04\uc73c\ub85c \uc804\ub2ec\ubc1b\uc744 \ub54c \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Resolver<\/strong>\ub294 \uc694\uccad\ubc1b\uc740 \ud544\ub4dc\ub97c \uc2e4\uc81c \ub370\uc774\ud130\ub85c \ub9cc\ub4e4\uc5b4 \ubc18\ud658\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL\uc744 \ub2e8\uc21c\ud788 REST\ubcf4\ub2e4 \ud3b8\ud55c API\ub77c\uace0 \uc0dd\uac01\ud558\uae30\ubcf4\ub2e4, <strong>Schema\ub97c \uae30\ubc18\uc73c\ub85c \ud074\ub77c\uc774\uc5b8\ud2b8\uc758 \ub370\uc774\ud130 \uc694\uccad\uc744 \ucc98\ub9ac\ud558\ub294 API \uc2dc\uc2a4\ud15c<\/strong>\uc73c\ub85c \ubcf4\ub294 \ud3b8\uc774 \uc815\ud655\ud558\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Schema<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL\uc5d0\ub294 Schema\uac00 \uc874\uc7ac\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Schema\ub294 \ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \ud0c0\uc785\uacfc \ud544\ub4dc, \uadf8\ub9ac\uace0 \ub370\uc774\ud130 \uac04\uc758 \uad00\uacc4\ub97c \uc815\uc758\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>type User {\n  id: ID!\n  name: String!\n  age: Int\n  characters: &#91;Character!]\n}\n\ntype Character {\n  id: ID!\n  name: String!\n  level: Int!\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>String<\/code>, <code>Int<\/code>, <code>Float<\/code>, <code>Boolean<\/code>, <code>ID<\/code> \uac19\uc740 \uae30\ubcf8 \ud0c0\uc785\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\uace0 \uc9c1\uc811 \ud0c0\uc785\uc744 \uc815\uc758\ud560 \uc218\ub3c4 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>!<\/code>\ub294 \ud574\ub2f9 \uac12\uc774 <code>null<\/code>\uc774 \ub420 \uc218 \uc5c6\ub2e4\ub294 \uc758\ubbf8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>name: String!\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub77c\uba74 <code>name<\/code>\uc740 \ubc18\ub4dc\uc2dc \uac12\uc774 \uc874\uc7ac\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubc18\ub300\ub85c<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>age: Int\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub77c\uba74 <code>age<\/code>\ub294 <code>null<\/code>\uc77c \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Schema\ub97c \ud1b5\ud574 API\uc5d0\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \ub370\uc774\ud130 \uad6c\uc870\uc640 \ud0c0\uc785\uc774 \uba85\ud655\ud558\uac8c \uc815\uc758\ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub798\uc11c GraphQL\uc740 API \uacc4\uc57d\uc744 \ucf54\ub4dc \uc218\uc900\uc5d0\uc11c \uba85\ud655\ud558\uac8c \uad00\ub9ac\ud558\uae30 \uc88b\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Query<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Query\ub294 \ub370\uc774\ud130\ub97c \uc870\ud68c\ud558\uae30 \uc704\ud55c \uc791\uc5c5\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Schema\uc5d0\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \uc815\uc758\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>type Query {\n  user(id: ID!): User\n  users: &#91;User!]!\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud074\ub77c\uc774\uc5b8\ud2b8\ub294 \ud544\uc694\ud55c \ud544\ub4dc\ub9cc \uc120\ud0dd\ud574\uc11c \uc694\uccad\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>query {\n  user(id: \"123\") {\n    id\n    name\n  }\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\ub978 \uc694\uccad\uc5d0\uc11c\ub294 \ub354 \ub9ce\uc740 \ub370\uc774\ud130\ub97c \uac00\uc838\uc62c \uc218\ub3c4 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>query {\n  user(id: \"123\") {\n    name\n    age\n    characters {\n      name\n      level\n    }\n  }\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac19\uc740 <code>user<\/code> Query\ub97c \uc0ac\uc6a9\ud558\ub354\ub77c\ub3c4 \ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \uc694\uccad\ud558\ub294 \ud544\ub4dc\uc5d0 \ub530\ub77c \uc751\ub2f5 \uad6c\uc870\uac00 \ub2ec\ub77c\uc9c4\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\uac83\uc774 GraphQL\uc758 \ud575\uc2ec\uc801\uc778 \ud2b9\uc9d5 \uc911 \ud558\ub098\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Mutation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Query\uac00 \ub370\uc774\ud130 \uc870\ud68c\ub77c\uba74 Mutation\uc740 \ub370\uc774\ud130 \ubcc0\uacbd\uc744 \ub2f4\ub2f9\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>type Mutation {\n  createUser(name: String!): User!\n  updateUser(id: ID!, name: String!): User!\n  deleteUser(id: ID!): Boolean!\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud074\ub77c\uc774\uc5b8\ud2b8\uc5d0\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \uc694\uccad\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mutation {\n  createUser(name: \"Player1\") {\n    id\n    name\n  }\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Mutation\uc5d0\uc11c\ub3c4 \ubc18\ud658\ubc1b\uc744 \ud544\ub4dc\ub97c \uc9c1\uc811 \uc120\ud0dd\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mutation {\n  createUser(name: \"Player1\") {\n    id\n    name\n    characters {\n      name\n    }\n  }\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Mutation\uc744 HTTP\uc758 POST\uc640 1:1\ub85c \ub300\uc751\ub418\ub294 \uac1c\ub150\uc73c\ub85c \ubcf4\uba74 \uc548 \ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL\uc5d0\uc11c Mutation\uc740 <strong>\ub370\uc774\ud130\ub97c \ubcc0\uacbd\ud558\ub294 \uc791\uc5c5\uc744 \ud45c\ud604\ud558\uae30 \uc704\ud55c Operation \ud0c0\uc785<\/strong>\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\uc81c HTTP\uc5d0\uc11c\ub294 \uc77c\ubc18\uc801\uc73c\ub85c POST\ub97c \uc0ac\uc6a9\ud558\uc9c0\ub9cc GraphQL \uc790\uccb4\uac00 HTTP Method\uc5d0 \uc885\uc18d\ub41c \uac83\uc740 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Resolver<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Schema\ub9cc \uc815\uc758\ud588\ub2e4\uace0 \uc2e4\uc81c \ub370\uc774\ud130\uac00 \uc0dd\uc131\ub418\ub294 \uac83\uc740 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL \uc11c\ubc84\uc5d0\ub294 Resolver\uac00 \ud544\uc694\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \ub2e4\uc74c Schema\uac00 \uc788\ub2e4\uace0 \ud558\uc790.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>type Query {\n  user(id: ID!): User\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc11c\ubc84\uc5d0\uc11c\ub294 \ud574\ub2f9 Query\ub97c \uc2e4\uc81c \ub370\uc774\ud130\ub85c \uc5f0\uacb0\ud558\ub294 Resolver\ub97c \uc791\uc131\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const resolvers = {\n  Query: {\n    user: (_, args) =&gt; {\n      return userRepository.findById(args.id);\n    }\n  }\n};\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc804\uccb4\uc801\uc778 \ud750\ub984\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; GraphQL Server -&gt; Query Resolver -&gt; Service \/ Repository -&gt; Database\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Resolver\uac00 \ubc18\ub4dc\uc2dc Database\uc5d0 \uc9c1\uc811 \uc811\uadfc\ud574\uc57c \ud558\ub294 \uac83\uc740 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">REST API\uc640 \ub9c8\ucc2c\uac00\uc9c0\ub85c Service, Repository, Cache, \uc678\ubd80 API \ub4f1\uc744 \uc5f0\uacb0\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Resolver -&gt; Service -&gt; Repository -&gt; Database\nResolver -&gt; External API\nResolver -&gt; Cache\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL\uc740 \ub370\uc774\ud130\ub97c \uc2e4\uc81c\ub85c \uc5b4\ub514\uc5d0\uc11c \uac00\uc838\uc624\ub294\uc9c0\ub97c \uc815\uc758\ud558\ub294 \uae30\uc220\uc774\ub77c\uae30\ubcf4\ub2e4, <strong>\ud074\ub77c\uc774\uc5b8\ud2b8\uc758 \ub370\uc774\ud130 \uc694\uccad\uc744 Schema\uc640 Resolver\ub97c \ud1b5\ud574 \ucc98\ub9ac\ud558\ub294 \uad6c\uc870<\/strong>\uc5d0 \uac00\uae5d\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Nested Query<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL\uc758 \ud2b9\uc9d5\uc774 \uac00\uc7a5 \uc798 \ub4dc\ub7ec\ub098\ub294 \ubd80\ubd84\uc774 Nested Query\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>query {\n  user(id: \"123\") {\n    name\n    characters {\n      name\n      level\n      items {\n        name\n        attack\n      }\n    }\n  }\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Schema\uc5d0 \ub370\uc774\ud130 \uad00\uacc4\uac00 \uc815\uc758\ub418\uc5b4 \uc788\ub2e4\uba74 \ud558\ub098\uc758 Query\uc5d0\uc11c \uad00\uacc4\ub97c \ub530\ub77c\uac00\uba70 \ud544\uc694\ud55c \ub370\uc774\ud130\ub97c \uc694\uccad\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>User -&gt; Character -&gt; Item\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">REST\uc5d0\uc11c\ub294 \uc774\ub7ec\ud55c \ub370\uc774\ud130\ub97c \uc5ec\ub7ec Endpoint\ub85c \ub098\ub220 \ucc98\ub9ac\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GET \/users\/123 -&gt; GET \/users\/123\/characters -&gt; GET \/characters\/456\/items\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL\uc5d0\uc11c\ub294 \ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \uc6d0\ud558\ub294 \ub370\uc774\ud130 \uad6c\uc870\ub97c \ud558\ub098\uc758 Query\ub85c \ud45c\ud604\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\ub9cc Nested Query\uac00 \ub9ce\ub2e4\uace0 \ud574\uc11c \uc11c\ubc84\uc758 Database Query\uae4c\uc9c0 \uc790\ub3d9\uc73c\ub85c \uc904\uc5b4\ub4dc\ub294 \uac83\uc740 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc624\ud788\ub824 Resolver\ub97c \uc798\ubabb \uad6c\ud604\ud558\uba74 \uc131\ub2a5 \ubb38\uc81c\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\ud45c\uc801\uc778 \ubb38\uc81c\uac00 N+1 \ubb38\uc81c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">N+1 \ubb38\uc81c<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 User 100\uba85\uc744 \uac00\uc838\uc624\uba74\uc11c \uac01 User\uc758 Character\ub3c4 \uac00\uc838\uc628\ub2e4\uace0 \ud558\uc790.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>query {\n  users {\n    id\n    name\n    characters {\n      name\n    }\n  }\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Resolver\ub97c \ub2e8\uc21c\ud558\uac8c \uad6c\ud604\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\uc740 \uc0c1\ud669\uc774 \ubc1c\uc0dd\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>User \uc870\ud68c 1\ud68c -&gt; \uac01 User\uc758 Character \uc870\ud68c 100\ud68c -&gt; \ucd1d 101\ubc88\uc758 Database Query\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\uac83\uc774 N+1 \ubb38\uc81c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL\uc5d0\uc11c\ub294 Nested Resolver\ub97c \ub9ce\uc774 \uc0ac\uc6a9\ud558\uae30 \ub54c\ubb38\uc5d0 \ud2b9\ud788 \uc8fc\uc758\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\ud45c\uc801\uc778 \ud574\uacb0 \ubc29\ubc95\uc73c\ub85c DataLoader \uac19\uc740 Batch \ucc98\ub9ac \ubc29\uc2dd\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>User 100\uba85 \uc870\ud68c -&gt; Character ID \uc218\uc9d1 -&gt; Character \uc77c\uad04 \uc870\ud68c -&gt; User\ubcc4 Character \ub9e4\ud551\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub530\ub77c\uc11c GraphQL\uc5d0\uc11c\ub294 Schema\ub9cc \uc124\uacc4\ud558\ub294 \uac83\uc774 \uc544\ub2c8\ub77c <strong>Resolver\uac00 \uc2e4\uc81c \ub370\uc774\ud130\ub97c \uc5b4\ub5bb\uac8c \uc870\ud68c\ud558\ub294\uc9c0\ub3c4 \ud568\uaed8 \uc124\uacc4\ud574\uc57c \ud55c\ub2e4.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Over-fetching\uacfc Under-fetching<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL\uc774 \uc790\uc8fc \ud574\uacb0\ud558\ub294 \ubb38\uc81c \uc911 \ud558\ub098\uac00 Over-fetching\uacfc Under-fetching\uc774\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Over-fetching<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\ud544\uc694\ud55c \ub370\uc774\ud130\ubcf4\ub2e4 \ub9ce\uc740 \ub370\uc774\ud130\ub97c \ubc1b\ub294 \uacbd\uc6b0\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \ub2e4\uc74c API\uac00 \uc788\ub2e4\uace0 \ud558\uc790.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GET \/users\/123\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc751\ub2f5\uc5d0 \ub2e4\uc74c \ub370\uc774\ud130\uac00 \ubaa8\ub450 \ud3ec\ud568\ub418\uc5b4 \uc788\ub2e4\uace0 \ud574\ubcf4\uc790.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"id\": 123,\n  \"name\": \"Player1\",\n  \"email\": \"...\",\n  \"age\": 25,\n  \"address\": \"...\",\n  \"characters\": &#91;],\n  \"friends\": &#91;],\n  \"inventory\": &#91;]\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud654\uba74\uc5d0\uc11c\ub294 \uc774\ub984 \ud558\ub098\ub9cc \ud544\uc694\ud55c\ub370 \ubd88\ud544\uc694\ud55c \ub370\uc774\ud130\uae4c\uc9c0 \ubc1b\uc544\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL\uc5d0\uc11c\ub294 \ud544\uc694\ud55c \ud544\ub4dc\ub9cc \uc694\uccad\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>query {\n  user(id: \"123\") {\n    name\n  }\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Under-fetching<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\ubc18\ub300\ub85c \ud544\uc694\ud55c \ub370\uc774\ud130\ub97c \uac00\uc838\uc624\uae30 \uc704\ud574 \uc5ec\ub7ec API\ub97c \ud638\ucd9c\ud574\uc57c \ud558\ub294 \uacbd\uc6b0\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>User API -&gt; Character API -&gt; Inventory API -&gt; Item API\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL\uc5d0\uc11c\ub294 Schema\uc5d0 \uad00\uacc4\uac00 \uad6c\uc131\ub418\uc5b4 \uc788\ub2e4\uba74 \ud558\ub098\uc758 Query\uc5d0\uc11c \ud544\uc694\ud55c \ub370\uc774\ud130 \uad6c\uc870\ub97c \uc694\uccad\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; GraphQL Query -&gt; User -&gt; Character -&gt; Inventory -&gt; Item\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\ub9cc API \uc694\uccad \ud69f\uc218\uac00 \uc904\uc5b4\ub4e0\ub2e4\uace0 \ud574\uc11c Database Query\ub3c4 \uc790\ub3d9\uc73c\ub85c \uc904\uc5b4\ub4dc\ub294 \uac83\uc740 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>HTTP Request \uac10\uc18c != Database Query \uac10\uc18c\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \ucc28\uc774\ub294 GraphQL\uc744 \uc0ac\uc6a9\ud560 \ub54c \ubc18\ub4dc\uc2dc \uad6c\ubd84\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">GraphQL\uacfc REST\uc758 \ucc28\uc774<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">REST\uc640 GraphQL\uc740 \ub2e8\uc21c\ud788 \uc5b4\ub290 \ud558\ub098\uac00 \ub354 \uc88b\uc740 \uae30\uc220\uc774\ub77c\uace0 \ubcfc \uc218 \uc5c6\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">REST\ub294 \ub9ac\uc18c\uc2a4\uc640 Endpoint\ub97c \uc911\uc2ec\uc73c\ub85c API\ub97c \uc124\uacc4\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/users -&gt; \/users\/{id} -&gt; \/characters -&gt; \/characters\/{id}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL\uc740 Schema\uc640 Query\ub97c \uc911\uc2ec\uc73c\ub85c \ub370\uc774\ud130\ub97c \uc694\uccad\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; Query -&gt; Schema -&gt; Resolver -&gt; Data\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">REST\uc5d0\uc11c\ub294 \uc11c\ubc84\uac00 Endpoint\uc640 \uc751\ub2f5 \uad6c\uc870\ub97c \uc815\uc758\ud558\ub294 \ube44\uc911\uc774 \ud06c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL\uc5d0\uc11c\ub294 \uc11c\ubc84\uac00 Schema\ub97c \uc815\uc758\ud558\uace0 \ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \ud544\uc694\ud55c \ud544\ub4dc\ub97c \uc120\ud0dd\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub530\ub77c\uc11c \ubaa8\ubc14\uc77c, \uc6f9, \uac8c\uc784 \ud074\ub77c\uc774\uc5b8\ud2b8\ucc98\ub7fc \ud074\ub77c\uc774\uc5b8\ud2b8\ub9c8\ub2e4 \ud544\uc694\ud55c \ub370\uc774\ud130\uac00 \ud06c\uac8c \ub2e4\ub974\uac70\ub098 \uc5ec\ub7ec \ub370\uc774\ud130 \uad00\uacc4\ub97c \uc870\ud569\ud574\uc57c \ud558\ub294 \uc11c\ube44\uc2a4\uc5d0\uc11c\ub294 GraphQL\uc774 \uc720\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubc18\ub300\ub85c \ub2e8\uc21c\ud55c CRUD API\ucc98\ub7fc \ub9ac\uc18c\uc2a4 \uad6c\uc870\uac00 \uba85\ud655\ud558\uace0 HTTP\uc758 \ud45c\uc900\uc801\uc778 \uce90\uc2f1\uacfc \ub3d9\uc791\uc744 \uc801\uadf9\uc801\uc73c\ub85c \ud65c\uc6a9\ud574\uc57c \ud55c\ub2e4\uba74 REST\uac00 \ub354 \ub2e8\uc21c\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL\uc744 REST\uc758 \uc0c1\uc704 \ud638\ud658\uc73c\ub85c \uc0dd\uac01\ud558\uba74 \uc548 \ub41c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">GraphQL\uc758 HTTP \uc694\uccad<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL\uc740 \uc77c\ubc18\uc801\uc73c\ub85c \ud558\ub098\uc758 Endpoint\ub97c \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>POST \/graphql\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc694\uccad Body\uc5d0\ub294 Query\uac00 \ud3ec\ud568\ub41c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"query\": \"query { user(id: \\\"123\\\") { name } }\"\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">HTTP Endpoint\ub294 \ud558\ub098\uc9c0\ub9cc \ub0b4\ubd80\uc5d0\uc11c\ub294 Query\uc640 Mutation \ub4f1\uc5d0 \ub530\ub77c \uc11c\ub85c \ub2e4\ub978 \uc791\uc5c5\uc774 \uc2e4\ud589\ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc751\ub2f5\uc740 \uc77c\ubc18\uc801\uc73c\ub85c <code>data<\/code>\ub97c \ud3ec\ud568\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"data\": {\n    \"user\": {\n      \"name\": \"Player1\"\n    }\n  }\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc624\ub958\uac00 \ubc1c\uc0dd\ud558\uba74 <code>errors<\/code> \ud544\ub4dc\uac00 \ud3ec\ud568\ub420 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"errors\": &#91;\n    {\n      \"message\": \"User not found\"\n    }\n  ]\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub530\ub77c\uc11c GraphQL\uc5d0\uc11c\ub294 HTTP Status Code\ub9cc \ubcf4\ub294 \uac83\uc774 \uc544\ub2c8\ub77c GraphQL\uc758 <code>data<\/code>\uc640 <code>errors<\/code> \uad6c\uc870\ub97c \ud568\uaed8 \uace0\ub824\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">GraphQL\uc758 \uc7a5\uc810<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL\uc758 \uac00\uc7a5 \ud070 \uc7a5\uc810\uc740 <strong>\ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \ud544\uc694\ud55c \ub370\uc774\ud130 \uad6c\uc870\ub97c \uc9c1\uc811 \uc120\ud0dd\ud560 \uc218 \uc788\ub2e4\ub294 \uac83<\/strong>\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud2b9\ud788 \uc5ec\ub7ec \uc885\ub958\uc758 \ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \ud558\ub098\uc758 \ubc31\uc5d4\ub4dc\ub97c \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0 \uc720\uc6a9\ud558\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GraphQL Server -&gt; Web\nGraphQL Server -&gt; Android\nGraphQL Server -&gt; iOS\nGraphQL Server -&gt; Game Client\nGraphQL Server -&gt; Admin\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac01 \ud074\ub77c\uc774\uc5b8\ud2b8\ub294 \ud544\uc694\ud55c \ud544\ub4dc\ub9cc \uc120\ud0dd\ud574\uc11c \uc694\uccad\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub610\ud55c Schema\uac00 \ud0c0\uc785 \uc815\ubcf4\ub97c \uac00\uc9c0\uace0 \uc788\uae30 \ub54c\ubb38\uc5d0 IDE \uc790\ub3d9\uc644\uc131, \ud0c0\uc785 \uac80\uc0ac, \ubb38\uc11c\ud654, \ucf54\ub4dc \uc0dd\uc131 \ub4f1\uc758 \uae30\ub2a5\uc744 \ud65c\uc6a9\ud558\uae30 \uc88b\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">GraphQL\uc758 \ub2e8\uc810<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL\uc740 \ud074\ub77c\uc774\uc5b8\ud2b8\uc758 \uc790\uc720\ub3c4\uac00 \ub192\uc740 \ub9cc\ud07c \uc11c\ubc84 \uad6c\uc870\uac00 \ubcf5\uc7a1\ud574\uc9c8 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uac00\uc7a5 \uba3c\uc800 Resolver \uad00\ub9ac \ubb38\uc81c\uac00 \uc0dd\uae34\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Query -&gt; Resolver -&gt; Service -&gt; Repository -&gt; Database\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Nested Query\uac00 \uae4a\uc5b4\uc9c8\uc218\ub85d Resolver \uac04\uc758 \uad00\uacc4\uc640 \ub370\uc774\ud130 \uc870\ud68c \ubc29\uc2dd\uc744 \uc2e0\uacbd \uc368\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">N+1 \ubb38\uc81c\ub3c4 \ub300\ud45c\uc801\uc778 \ubb38\uc81c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub610\ud55c \ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \ubcf5\uc7a1\ud55c Query\ub97c \uc791\uc131\ud560 \uc218 \uc788\ub2e4\ub294 \uac83\uc740 \uc11c\ubc84 \uc785\uc7a5\uc5d0\uc11c\ub294 \ubd80\ud558\uac00 \ub420 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uc9c0\ub098\uce58\uac8c \uae4a\uc740 Query\ub098 \uc9c0\ub098\uce58\uac8c \ub9ce\uc740 \ub370\uc774\ud130\ub97c \uc694\uad6c\ud558\ub294 \uc694\uccad\uc774 \ub4e4\uc5b4\uc62c \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub798\uc11c \uc2e4\uc81c \uc11c\ube44\uc2a4\uc5d0\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \ubc29\uc5b4 \uc7a5\uce58\ub97c \uace0\ub824\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Query Depth \uc81c\ud55c -&gt; Query Complexity \uc81c\ud55c -&gt; Pagination -&gt; Timeout -&gt; Rate Limit\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uce90\uc2f1\ub3c4 REST\ubcf4\ub2e4 \ub2e8\uc21c\ud558\uc9c0 \uc54a\uc744 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">REST\ub294 URL\uacfc HTTP Method\ub97c \uae30\uc900\uc73c\ub85c \uce90\uc2dc\ud558\uae30 \ube44\uad50\uc801 \uc27d\uc9c0\ub9cc GraphQL\uc740 \ud558\ub098\uc758 Endpoint\uc5d0 \ub2e4\uc591\ud55c Query\uac00 \ub4e4\uc5b4\uc624\uae30 \ub54c\ubb38\uc5d0 \ubcc4\ub3c4\uc758 \uce90\uc2f1 \uc804\ub7b5\uc774 \ud544\uc694\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Pagination<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL\uc5d0\uc11c \ubaa9\ub85d \ub370\uc774\ud130\ub97c \uac00\uc838\uc62c \ub54c\ub294 Pagination\ub3c4 \ud568\uaed8 \uc124\uacc4\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\uc74c\uacfc \uac19\uc774 \ubaa8\ub4e0 \uc0ac\uc6a9\uc790\ub97c \ud55c \ubc88\uc5d0 \uac00\uc838\uc624\ub3c4\ub85d \ub9cc\ub4e4\uba74 \ub370\uc774\ud130\uac00 \ub9ce\uc544\uc84c\uc744 \ub54c \ubb38\uc81c\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>query {\n  users {\n    id\n    name\n  }\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub798\uc11c \ud398\uc774\uc9c0 \ud06c\uae30\ub098 Cursor\ub97c \uc774\uc6a9\ud574 \ub370\uc774\ud130\ub97c \ub098\ub220 \uac00\uc838\uc628\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cursor \uae30\ubc18 Pagination\uc740 \ub2e4\uc74c\uacfc \uac19\uc740 \ud615\ud0dc\ub85c \uad6c\uc131\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>query {\n  users(first: 20, after: \"cursor\") {\n    edges {\n      node {\n        id\n        name\n      }\n    }\n    pageInfo {\n      hasNextPage\n      endCursor\n    }\n  }\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc804\uccb4\uc801\uc778 \ud750\ub984\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; Cursor \uc804\ub2ec -&gt; \ub2e4\uc74c \ub370\uc774\ud130 \uc870\ud68c -&gt; \uc0c8\ub85c\uc6b4 Cursor \ubc18\ud658 -&gt; \ub2e4\uc74c \uc694\uccad\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud2b9\ud788 \ub300\uaddc\ubaa8 \ub370\uc774\ud130\uc5d0\uc11c\ub294 Offset \uae30\ubc18\ubcf4\ub2e4 Cursor \uae30\ubc18 Pagination\uc774 \uc720\ub9ac\ud55c \uacbd\uc6b0\uac00 \ub9ce\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\ub9cc Pagination \ubc29\uc2dd\uc740 \ub370\uc774\ud130 \ud2b9\uc131\uacfc \uc870\ud68c \ud328\ud134\uc744 \uace0\ub824\ud574\uc11c \uc120\ud0dd\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">GraphQL\uacfc \uc778\uc99d \/ \uad8c\ud55c<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL\uc5d0\uc11c\ub294 \ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \uc6d0\ud558\ub294 \ud544\ub4dc\ub97c \uc9c1\uc811 \uc694\uccad\ud560 \uc218 \uc788\uae30 \ub54c\ubb38\uc5d0 \uad8c\ud55c \ucc98\ub9ac\uac00 \uc911\uc694\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Schema\uc5d0 \ud544\ub4dc\uac00 \uc874\uc7ac\ud55c\ub2e4\uace0 \ud574\uc11c \ubaa8\ub4e0 \uc0ac\uc6a9\uc790\uac00 \uc811\uadfc\ud560 \uc218 \uc788\ub294 \uac83\uc740 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \ub2e4\uc74c\uacfc \uac19\uc740 Query\uac00 \uc788\ub2e4\uace0 \ud558\uc790.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>query {\n  user(id: \"123\") {\n    name\n    email\n    paymentHistory\n  }\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub85c\uadf8\uc778\ud55c \uc0ac\uc6a9\uc790\ub77c\uace0 \ud574\uc11c <code>paymentHistory<\/code>\uae4c\uc9c0 \uc811\uadfc\ud560 \uc218 \uc788\ub2e4\ub294 \uc758\ubbf8\ub294 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\uc81c \uad8c\ud55c \uac80\uc0ac\ub294 Resolver\ub098 Service \uacc4\uce35\uc5d0\uc11c \uc218\ud589\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>HTTP Request -&gt; Authentication -&gt; GraphQL -&gt; Resolver -&gt; Authorization -&gt; Service -&gt; Data\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc778\uc99d\uc740 \uc0ac\uc6a9\uc790\uac00 \ub204\uad6c\uc778\uc9c0 \ud655\uc778\ud558\ub294 \uac83\uc774\uace0, \uc778\uac00\ub294 \ud574\ub2f9 \uc0ac\uc6a9\uc790\uac00 \ud2b9\uc815 \ub370\uc774\ud130\ub098 \uae30\ub2a5\uc5d0 \uc811\uadfc\ud560 \uc218 \uc788\ub294\uc9c0 \ud655\uc778\ud558\ub294 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL\uc758 \ud544\ub4dc \uc120\ud0dd \uae30\ub2a5\uacfc \ubcc4\uac1c\ub85c \uc2e4\uc81c \ub370\uc774\ud130 \uc811\uadfc \uad8c\ud55c\uc740 \uc11c\ubc84\uc5d0\uc11c \ubc18\ub4dc\uc2dc \ud1b5\uc81c\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">GraphQL\uc744 \uc0ac\uc6a9\ud560 \ub54c \uace0\ub824\ud560 \uac83<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL\uc744 \ub3c4\uc785\ud55c\ub2e4\uace0 \ud574\uc11c REST API\uc758 \ubaa8\ub4e0 \ubb38\uc81c\uac00 \uc790\ub3d9\uc73c\ub85c \ud574\uacb0\ub418\ub294 \uac83\uc740 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\uc81c\ub85c\ub294 \ub2e4\uc74c \uc694\uc18c\ub4e4\uc744 \ud568\uaed8 \uc124\uacc4\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Schema -&gt; Type \/ Query \/ Mutation \/ Pagination\nResolver -&gt; Data Fetching \/ Batch \/ Authorization \/ Error Handling\nInfrastructure -&gt; Cache \/ Database \/ Monitoring \/ Query Limiting\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud2b9\ud788 Resolver\uac00 Database\uc5d0 \uc9c1\uc811 \uc811\uadfc\ud558\ub3c4\ub85d \ubb34\ubd84\ubcc4\ud558\uac8c \uad6c\uc131\ud558\uba74 \ube44\uc988\ub2c8\uc2a4 \ub85c\uc9c1\uacfc \ub370\uc774\ud130 \uc811\uadfc \ub85c\uc9c1\uc774 \uc11e\uc77c \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub798\uc11c \uc77c\ubc18\uc801\uc778 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uad6c\uc870\uc5d0\uc11c\ub294 GraphQL\uc744 \uae30\uc874 Service \/ Repository \uad6c\uc870\uc640 \uc5f0\uacb0\ud574\uc11c \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0\uac00 \ub9ce\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; GraphQL -&gt; Resolver -&gt; Service -&gt; Repository -&gt; Database\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL\uc740 \uae30\uc874 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uc544\ud0a4\ud14d\ucc98\ub97c \uc804\ubd80 \ub300\uccb4\ud558\ub294 \uae30\uc220\uc774 \uc544\ub2c8\ub77c <strong>API \uacc4\uce35\uc5d0\uc11c \ud074\ub77c\uc774\uc5b8\ud2b8\uc758 \ub370\uc774\ud130 \uc694\uccad \ubc29\uc2dd\uc744 \ubc14\uafb8\ub294 \uae30\uc220<\/strong>\ub85c \ubcf4\ub294 \ud3b8\uc774 \uc774\ud574\ud558\uae30 \uc27d\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">GraphQL\uc744 \uc5b4\ub514\uc5d0 \uc0ac\uc6a9\ud560 \uac83\uc778\uac00<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL\uc740 \ub370\uc774\ud130 \uad00\uacc4\uac00 \ubcf5\uc7a1\ud558\uace0 \ud074\ub77c\uc774\uc5b8\ud2b8\ub9c8\ub2e4 \ud544\uc694\ud55c \ub370\uc774\ud130\uac00 \ub2e4\ub978 \uc11c\ube44\uc2a4\uc5d0\uc11c \ud2b9\ud788 \uc798 \ub9de\ub294\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \ud558\ub098\uc758 \ubc31\uc5d4\ub4dc\ub97c \uc5ec\ub7ec \ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \uc0ac\uc6a9\ud55c\ub2e4\uace0 \ud574\ubcf4\uc790.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GraphQL Server -&gt; Web\nGraphQL Server -&gt; Mobile\nGraphQL Server -&gt; Game\nGraphQL Server -&gt; Admin\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac01 \ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \ud544\uc694\ud55c \ub370\uc774\ud130\uac00 \ub2e4\ub974\uace0 \ud558\ub098\uc758 \ud654\uba74\uc744 \uad6c\uc131\ud558\uae30 \uc704\ud574 \uc5ec\ub7ec \ub9ac\uc18c\uc2a4\ub97c \uc870\ud569\ud574\uc57c \ud55c\ub2e4\uba74 GraphQL\uc758 \uc7a5\uc810\uc744 \ud65c\uc6a9\ud558\uae30 \uc88b\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubc18\ub300\ub85c \ub2e8\uc21c\ud55c CRUD API\ub77c\uba74 REST\ub85c \ucda9\ubd84\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GET \/users\/{id}\nPOST \/users\nPUT \/users\/{id}\nDELETE \/users\/{id}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \uc815\ub3c4\uc758 \uad6c\uc870\ub77c\uba74 GraphQL\uc744 \ucd94\uac00\ud558\uba74\uc11c \uc5bb\ub294 \uc774\uc810\ubcf4\ub2e4 API \uacc4\uce35\uc774 \ubcf5\uc7a1\ud574\uc9c0\ub294 \ube44\uc6a9\uc774 \ub354 \ud074 \uc218\ub3c4 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL\uc744 \uc0ac\uc6a9\ud558\uae30 \uc704\ud55c \uc774\uc720\uac00 \ud544\uc694\ud574\uc11c GraphQL\uc744 \ub3c4\uc785\ud558\ub294 \uac83\uc740 \uc88b\uc740 \uc124\uacc4\uac00 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\uc804\uccb4 \uad6c\uc870<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL\uc758 \uc804\uccb4\uc801\uc778 \ud750\ub984\uc744 \ud558\ub098\ub85c \uc815\ub9ac\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; Query \/ Mutation -&gt; GraphQL Endpoint -&gt; Schema -&gt; Resolver -&gt; Service -&gt; Repository \/ External API \/ Cache -&gt; Database\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 User\uc640 Character\ub97c \ud568\uaed8 \uc870\ud68c\ud55c\ub2e4\uba74 \ub2e4\uc74c\uacfc \uac19\uc740 \ud750\ub984\uc774 \ub9cc\ub4e4\uc5b4\uc9c8 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; Query -&gt; User Resolver -&gt; User Service -&gt; User Repository -&gt; Database\nClient -&gt; Query -&gt; Character Resolver -&gt; Character Service -&gt; Character Repository -&gt; Database\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Nested Query\ub97c \ud6a8\uc728\uc801\uc73c\ub85c \ucc98\ub9ac\ud55c\ub2e4\uba74 Batch \ub85c\ub529\uc774\ub098 DataLoader \ub4f1\uc744 \ucd94\uac00\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Nested Query -&gt; Resolver -&gt; Batch Loader -&gt; \uc77c\uad04 \uc870\ud68c -&gt; \ub370\uc774\ud130 \ub9e4\ud551 -&gt; Response\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub9ac\uace0 \uc804\uccb4 \uc694\uccad\uc5d0\ub294 \uc778\uc99d\uacfc \uad8c\ud55c \uac80\uc0ac, Query \uc81c\ud55c, \ubaa8\ub2c8\ud130\ub9c1 \ub4f1\uc758 \uae30\ubc18 \uae30\ub2a5\uc774 \ubd99\ub294\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; Authentication -&gt; GraphQL -&gt; Query Validation -&gt; Resolver -&gt; Authorization -&gt; Service -&gt; Repository -&gt; Database\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">REST\uc640 GraphQL\uc744 \ud55c \ubc88\uc5d0 \ube44\uad50\ud558\uba74<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>REST -&gt; Resource -&gt; Endpoint -&gt; Fixed Response\nGraphQL -&gt; Schema -&gt; Query -&gt; Selected Fields\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">REST\ub294 \uc11c\ubc84\uac00 \uc81c\uacf5\ud558\ub294 \ub9ac\uc18c\uc2a4\uc640 Endpoint\ub97c \uc911\uc2ec\uc73c\ub85c API\ub97c \uc124\uacc4\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL\uc740 \uc11c\ubc84\uac00 Schema\ub97c \uc815\uc758\ud558\uace0 \ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \ud544\uc694\ud55c \ub370\uc774\ud130 \uad6c\uc870\ub97c \uc120\ud0dd\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>REST -&gt; Server\uac00 API \uad6c\uc870\ub97c \uc815\uc758 -&gt; Client\uac00 Endpoint \ud638\ucd9c\nGraphQL -&gt; Server\uac00 Schema \uc815\uc758 -&gt; Client\uac00 \ud544\uc694\ud55c \ud544\ub4dc \uc120\ud0dd -&gt; Server\uac00 Query \uc2e4\ud589\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub450 \ubc29\uc2dd\uc758 \ucc28\uc774\ub97c \uc774 \uc815\ub3c4\ub85c \uc7a1\uc544\ub450\uba74 \uc2e4\uc81c \ud504\ub85c\uc81d\ud2b8\uc5d0\uc11c \uc5b4\ub5a4 API \ubc29\uc2dd\uc744 \uc120\ud0dd\ud574\uc57c \ud560\uc9c0\ub3c4 \ud310\ub2e8\ud558\uae30 \uc26c\uc6cc\uc9c4\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\uc815\ub9ac<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL\uc744 \uacf5\ubd80\ud558\uba74\uc11c \uac00\uc7a5 \uba3c\uc800 \uc7a1\uc544\uc57c \ud560 \uad6c\uc870\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; Query \/ Mutation -&gt; GraphQL Server -&gt; Schema -&gt; Resolver -&gt; Service -&gt; Repository -&gt; Database\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud074\ub77c\uc774\uc5b8\ud2b8\ub294 Schema\uc5d0 \uc815\uc758\ub41c \ub370\uc774\ud130 \uad6c\uc870\ub97c \uae30\uc900\uc73c\ub85c \ud544\uc694\ud55c \ud544\ub4dc\ub97c \uc120\ud0dd\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>query {\n  user(id: \"123\") {\n    name\n    characters {\n      name\n      level\n    }\n  }\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL\uc774 \ud574\uacb0\ud558\ub824\ub294 \ub300\ud45c\uc801\uc778 \ubb38\uc81c\ub294 Over-fetching\uacfc Under-fetching\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubc18\uba74 \uc790\uc720\ub85c\uc6b4 Query \uad6c\uc870 \ub54c\ubb38\uc5d0 N+1, \uacfc\ub3c4\ud55c Query, \uad8c\ud55c, Pagination, \uce90\uc2f1 \ub4f1\uc758 \ubb38\uc81c\ub97c \uc11c\ubc84\uc5d0\uc11c \ubcc4\ub3c4\ub85c \uad00\ub9ac\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub798\uc11c GraphQL\uc744 \ub2e8\uc21c\ud788 REST API\ub97c \ub300\uccb4\ud558\ub294 \uae30\uc220\uc774\ub77c\uace0 \uc774\ud574\ud558\uae30\ubcf4\ub2e4\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \uad6c\ubd84\ud558\ub294 \ud3b8\uc774 \uc88b\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>REST -&gt; Resource \/ Endpoint \uc911\uc2ec\nGraphQL -&gt; Schema \/ Query \uc911\uc2ec\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL\uc758 \ubcf8\uc9c8\uc740 <strong>\ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \ud544\uc694\ud55c \ub370\uc774\ud130 \uad6c\uc870\ub97c \uc120\uc5b8\ud558\uace0, \uc11c\ubc84\uac00 Schema\uc640 Resolver\ub97c \ud1b5\ud574 \uadf8 \uc694\uccad\uc744 \ucc98\ub9ac\ud558\ub294 \uac83<\/strong>\uc5d0 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uacb0\uad6d \uc911\uc694\ud55c \uac83\uc740 Query \ubb38\ubc95 \uc790\uccb4\uac00 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Schema \uc124\uacc4 -&gt; Query \uc124\uacc4 -&gt; Resolver \uad6c\ud604 -&gt; Data Fetching -&gt; \uc131\ub2a5 \/ \uad8c\ud55c \/ \uce90\uc2f1 \uad00\ub9ac\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL\uc744 \uc81c\ub300\ub85c \uc0ac\uc6a9\ud558\ub824\uba74 Schema\uac00 \uc2e4\uc81c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 Service, Repository, Database \uad6c\uc870\uc640 \uc5b4\ub5bb\uac8c \uc5f0\uacb0\ub418\ub294\uc9c0\ub97c \uc774\ud574\ud574\uc57c \ud55c\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>REST API\ub97c \uc0ac\uc6a9\ud558\ub2e4 \ubcf4\uba74 API \uc124\uacc4\uac00 \uc0dd\uac01\ubcf4\ub2e4 \ubcf5\uc7a1\ud574\uc9c0\ub294 \uc21c\uac04\uc774 \uc788\ub2e4. \ud654\uba74 \ud558\ub098\ub97c \uad6c\uc131\ud558\uae30 \uc704\ud574 \uc5ec\ub7ec API\ub97c \ud638\ucd9c\ud574\uc57c \ud558\uac70\ub098, \ubc18\ub300\ub85c \ud558\ub098\uc758 API\uac00 \ub108\ubb34 \ub9ce\uc740 \ub370\uc774\ud130\ub97c \ubc18\ud658\ud574\uc11c \ud074\ub77c\uc774\uc5b8\ud2b8\uc5d0\uc11c \ud544\uc694 \uc5c6\ub294 \ub370\uc774\ud130\ub97c \ubc84\ub9ac\ub294 \uacbd\uc6b0\uac00 \uc0dd\uae34\ub2e4. GraphQL\uc740 \uc774\ub7f0 \ubb38\uc81c\ub97c \ub2e4\ub978 \ubc29\uc2dd\uc73c\ub85c \ud574\uacb0\ud55c\ub2e4. REST\uac00 \uc11c\ubc84\uc5d0\uc11c \ubbf8\ub9ac \uc815\uc758\ud55c \uc5ec\ub7ec Endpoint\ub97c \uc81c\uacf5\ud558\ub294 \ubc29\uc2dd\uc774\ub77c\uba74, GraphQL\uc740 \ud558\ub098\uc758 Endpoint\ub97c \ud1b5\ud574 \ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \ud544\uc694\ud55c \ub370\uc774\ud130\uc758 \uad6c\uc870\ub97c \uc9c1\uc811 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[49],"tags":[],"class_list":["post-1667","post","type-post","status-publish","format-standard","hentry","category-server"],"_links":{"self":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/1667","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1667"}],"version-history":[{"count":2,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/1667\/revisions"}],"predecessor-version":[{"id":1954,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/1667\/revisions\/1954"}],"wp:attachment":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1667"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1667"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1667"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}