{"id":5089,"date":"2018-05-08T09:00:31","date_gmt":"2018-05-08T16:00:31","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=5089"},"modified":"2025-06-13T18:45:29","modified_gmt":"2025-06-14T01:45:29","slug":"using-graphql-with-golang-and-a-nosql-database","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/using-graphql-with-golang-and-a-nosql-database\/","title":{"rendered":"Golang \ubc0f NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc640 \ud568\uaed8 GraphQL \uc0ac\uc6a9"},"content":{"rendered":"<p>\uba87 \uc8fc \uc804\uc5d0 \uc800\ub294 \uc810\uc810 \uc778\uae30\ub97c \uc5bb\uace0 \uc788\ub294 GraphQL\uc5d0 \ub300\ud574 \ubc30\uc6b0\uace0 \uc788\uc73c\uba70, \uc774\uac83\uc774 \uc5b4\ub5bb\uac8c \uc77c\ubc18\uc801\uc778 RESTful API\ub97c \ub300\uccb4\ud560 \uc218 \uc788\ub294\uc9c0\uc5d0 \ub300\ud574 \uc5b8\uae09\ud55c \uc801\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uc800\uc758 <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/creating-a-graphql-application-with-node-js-and-a-nosql-database\/\" target=\"_blank\" rel=\"noopener noreferrer\">\uc774\uc804 \uc608\uc81c<\/a>\uc5d0\uc11c Node.js\ub97c \uc0ac\uc6a9\ud558\uc5ec GraphQL \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ub9cc\ub4dc\ub294 \ubc29\ubc95\uacfc <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/\" target=\"_blank\" rel=\"noopener noreferrer\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4<\/a> <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/resources\/why-nosql\/\">NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4<\/a>. \ud558\uc9c0\ub9cc \uc800\ub294 Node.js\ub9cc\ud07c\uc774\ub098 Go \ud504\ub85c\uadf8\ub798\ubc0d \uc5b8\uc5b4\uc758 \ud32c\uc785\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\uc74c\uc744 \uc0ac\uc6a9\ud558\uc5ec \ub370\uc774\ud130\ub97c \uc0dd\uc131\ud558\uace0 \ucffc\ub9ac\ud560 \uc218 \uc788\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 Golang\uc73c\ub85c \ub9cc\ub4dc\ub294 \ubc29\ubc95\uc744 \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/processing-graphql-queries-with-java-spring-boot-and-nosql\/\">GraphQL \ucffc\ub9ac<\/a> \ub300\uc2e0 \uc5ec\ub7ec \uac1c\uc758 RESTful API \uc5d4\ub4dc\ud3ec\uc778\ud2b8\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<\/p>\n<p><!--more--><\/p>\n<p>GraphQL\uc5d0 \uc775\uc219\ud558\uc9c0 \uc54a\uc73c\uc2dc\ub2e4\uba74, \uc774 \ubc29\uc2dd\uc740 \ud504\ub860\ud2b8\uc5d4\ub4dc\uc5d0\uc11c \ubc31\uc5d4\ub4dc\ub85c \ucffc\ub9ac\ub97c \uc804\ub2ec\ud558\uace0 \ub370\uc774\ud130\uc758 \ucd9c\ucc98\ub098 \ubcf5\uc7a1\uc131\uc5d0 \uad00\uacc4\uc5c6\uc774 \uc694\uccad\ud55c \ub370\uc774\ud130\ub9cc \uac00\uc838\uc624\ub294 \ubc29\uc2dd\uc73c\ub85c \uc791\ub3d9\ud558\uba70, \uad00\ub828\uc131\uc774 \uc5c6\ub294 \uc218\ub9ce\uc740 API \uc5d4\ub4dc\ud3ec\uc778\ud2b8\uc5d0\uc11c \ub370\uc774\ud130\ub97c \uc18c\ube44\ud558\ub294 \ub300\uc2e0\uc5d0 \ub370\uc774\ud130\uc758 \ucd9c\ucc98\ub098 \ubcf5\uc7a1\uc131\uc5d0 \uad00\uacc4\uc5c6\uc774 \uc694\uccad\ub41c \ub370\uc774\ud130\ub9cc \ubc18\ud658\ud569\ub2c8\ub2e4. \uc774\ub807\uac8c \ud558\uba74 \uc694\uccad\uacfc \ub370\uc774\ud130 \ud398\uc774\ub85c\ub4dc\uac00 \uc904\uc5b4\ub4e4\uc5b4 \ube60\ub974\uace0 \ud6a8\uc728\uc801\uc73c\ub85c \uc5c5\ubb34\ub97c \ucc98\ub9ac\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h2>GraphQL \ubc0f Golang \uc2dc\uc791\ud558\uae30<\/h2>\n<p>RESTful API\uc640 \ub9c8\ucc2c\uac00\uc9c0\ub85c GraphQL \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \ub300\ubd80\ubd84\uc740 \uc124\uc815\uc73c\ub85c \uad6c\uc131\ub429\ub2c8\ub2e4. \uadf8\ub7ec\ub098 GraphQL \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc740 \uacc4\ud68d\uc5d0 \ub530\ub77c \ub2ec\ub77c\uc9c0\ub294 \ubd80\ubd84\uc774 \uc801\uae30 \ub54c\ubb38\uc5d0 \uc0ac\uc6a9\ud558\uae30 \uc27d\ub3c4\ub85d \ub9ce\uc740 \uacc4\ud68d\uc774 \ud544\uc694\ud55c RESTful API\uc640\ub294 \ub2e4\ub985\ub2c8\ub2e4.<\/p>\n<p>\uacc4\uc18d \uc9c4\ud589\ud558\ub824\uba74 \uba3c\uc800 Golang\uc5d0 \ub300\ud55c GraphQL \ud328\ud0a4\uc9c0 \uc885\uc18d\uc131\uc744 \uc124\uce58\ud574\uc57c \ud569\ub2c8\ub2e4. \uba85\ub839\uc904\uc5d0\uc11c \ub2e4\uc74c\uc744 \uc2e4\ud589\ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">go get github.com\/graphql-go\/graphql<\/pre>\n<p>\uc885\uc18d\uc131\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \uacbd\uc6b0, \ud504\ub85c\uc81d\ud2b8 \ub0b4\uc5d0\uc11c \uc0c8 \ud504\ub85c\uc81d\ud2b8\ub97c \uc0dd\uc131\ud558\uc138\uc694.\u00a0<strong>$GOPATH<\/strong>. \ud574\ub2f9 \ud504\ub85c\uc81d\ud2b8 \ub0b4\uc5d0\uc11c \ub2e4\uc74c\uacfc \uac19\uc740 \ud30c\uc77c\uc744 \ub9cc\ub4ed\ub2c8\ub2e4.\u00a0<strong>main.go<\/strong> \uc758 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uae30\ubc18\uc774 \ub420 \ub2e4\uc74c \uc0ac\ud56d\uc744 \ud3ec\ud568\ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">package main\r\n\r\nimport (\r\n\t\"encoding\/json\"\r\n\t\"fmt\"\r\n\t\"log\"\r\n\t\"net\/http\"\r\n\t\"github.com\/graphql-go\/graphql\"\r\n)\r\n\r\ntype Account struct {\r\n\tID        string `json:\"id,omitempty\"`\r\n\tFirstname string `json:\"firstname\"`\r\n\tLastname  string `json:\"lastname\"`\r\n\tType      string `json:\"type\"`\r\n}\r\n\r\ntype Blog struct {\r\n\tID      string `json:\"id,omitempty\"`\r\n\tAccount string `json:\"account\"`\r\n\tTitle   string `json:\"title\"`\r\n\tContent string `json:\"content\"`\r\n\tType    string `json:\"type\"`\r\n}\r\n\r\nfunc main() {\r\n\tfmt.Println(\"Starting application...\")\r\n\taccountType := graphql.NewObject(graphql.ObjectConfig{\r\n\t\tName: \"Account\",\r\n\t\tFields: graphql.Fields{},\r\n\t})\r\n\tblogType := graphql.NewObject(graphql.ObjectConfig{\r\n\t\tName: \"Blog\",\r\n\t\tFields: graphql.Fields{},\r\n\t})\r\n\trootQuery := graphql.NewObject(graphql.ObjectConfig{\r\n\t\tName: \"Query\",\r\n\t\tFields: graphql.Fields{},\r\n\t})\r\n\trootMutation := graphql.NewObject(graphql.ObjectConfig{\r\n\t\tName: \"RootMutation\",\r\n\t\tFields: graphql.Fields{},\r\n\t})\r\n\tschema, _ := graphql.NewSchema(graphql.SchemaConfig{\r\n\t\tQuery:    rootQuery,\r\n\t\tMutation: rootMutation,\r\n\t})\r\n\thttp.HandleFunc(\"\/graphql\", func(w http.ResponseWriter, r *http.Request) {\r\n\t\tresult := graphql.Do(graphql.Params{\r\n\t\t\tSchema:        schema,\r\n\t\t\tRequestString: r.URL.Query().Get(\"query\"),\r\n\t\t})\r\n\t\tjson.NewEncoder(w).Encode(result)\r\n\t})\r\n\thttp.ListenAndServe(\":8080\", nil)\r\n}<\/pre>\n<p>\uc800\ud76c\uc758 \uacc4\ud68d\uc740 \ud2b9\uc815 \uacc4\uc815\uc5d0 \ub300\ud55c \ube14\ub85c\uadf8 \ud56d\ubaa9\uc744 \uc0dd\uc131\ud558\uace0 \ucffc\ub9ac\ud560 \ubfd0\ub9cc \uc544\ub2c8\ub77c \uacc4\uc815\uc744 \uc0dd\uc131\ud558\uace0 \ucffc\ub9ac\ud560 \uc218 \uc788\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ub9cc\ub4dc\ub294 \uac83\uc785\ub2c8\ub2e4. \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \ub370\uc774\ud130 \ubaa8\ub378\uc740 \ub2e4\uc74c\uacfc \uac19\uc774 \uc815\uc758\ub429\ub2c8\ub2e4.\u00a0<code>\uacc4\uc815<\/code> \uad6c\uc870\uccb4\uc640 <code>\ube14\ub85c\uadf8<\/code> \uad6c\uc870\uccb4. \uc774 \ub370\uc774\ud130 \ubaa8\ub378\uc740 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ub370\uc774\ud130 \ubaa8\ub378\uacfc GraphQL \ub370\uc774\ud130 \ubaa8\ub378\uc744 \uac15\ud654\ud558\ub294 \ub370 \ub3c4\uc6c0\uc774 \ub429\ub2c8\ub2e4.<\/p>\n<p>GraphQL \uc124\uc815\uacfc \uad00\ub828\ud558\uc5ec \uba87 \uac00\uc9c0 \uac1d\uccb4\uac00 \uc0dd\uc131\ub41c \uac83\uc744 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uac1d\uccb4\uc758 <code>\uacc4\uc815 \uc720\ud615<\/code> \ubc0f <code>\ube14\ub85c\uadf8 \uc720\ud615<\/code> \ub294 Go \uad6c\uc870\uccb4\ub97c \uc911\uc2ec\uc73c\ub85c \ub9cc\ub4e4\uc5b4\uc9c8 GraphQL \ub370\uc774\ud130 \ubaa8\ub378\uc744 \ub098\ud0c0\ub0c5\ub2c8\ub2e4. \uc544\uc9c1 \uad6c\uc131\ub418\uc9c0 \uc54a\uc558\uc9c0\ub9cc \uace7 \uad6c\uc131\ub420 \uc608\uc815\uc785\ub2c8\ub2e4. \uadf8\ub9ac\uace0 <code>rootQuery<\/code> \ub294 \uc6b0\ub9ac\uac00 \uc2e4\ud589\ud560 \uc218 \uc788\ub294 \ucffc\ub9ac \uc9d1\ud569\uc774 \ub418\uace0 <code>rootMutation<\/code> \ub294 \uc2e4\ud589\ud560 \uc218 \uc788\ub294 \ubaa8\ub4e0 \ub370\uc774\ud130 \ubcc0\uacbd \ubcc0\uc774\uac00 \ub429\ub2c8\ub2e4. GraphQL\uc744 \uc0ac\uc6a9\ud558\uba74 \ub370\uc774\ud130\ub97c \uc77d\ub294 \ub370\ub9cc \uad6d\ud55c\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/p>\n<p>GraphQL \uc2a4\ud0a4\ub9c8\ub97c \uc0ac\uc6a9\ud558\uba74 \ubb34\uc5c7\uc774 \ucffc\ub9ac\uc774\uace0 \ubb34\uc5c7\uc774 \ubcc0\uc774\uc778\uc9c0 \uc815\uc758\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub294 \ucffc\ub9ac\ub97c \uc0ac\uc6a9\ud558\uace0\uc790 \ud560 \ub54c \ud544\uc694\ud569\ub2c8\ub2e4. RESTful API\ub97c \ub9cc\ub4e4\uc9c0 \uc54a\ub354\ub77c\ub3c4 HTTP \uc5d4\ub4dc\ud3ec\uc778\ud2b8\ub294 \uc5ec\uc804\ud788 \ud544\uc694\ud569\ub2c8\ub2e4. \uc774 \ub2e8\uc77c <code>\/graphql<\/code> \uc5d4\ub4dc\ud3ec\uc778\ud2b8\ub294 \ubaa8\ub4e0 \ucffc\ub9ac \ubc0f \ubcc0\ud615\uc744 \ucc98\ub9ac\ud558\uba70 \uc2a4\ud0a4\ub9c8\uc5d0 \uc758\ud574 \uad6c\ub3d9\ub429\ub2c8\ub2e4.<\/p>\n<p>\ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc5f0\uacb0\ud558\uae30 \uc804\uc5d0 GraphQL \uc2a4\ud0a4\ub9c8\ub97c \uc815\uc758\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">accountType := graphql.NewObject(graphql.ObjectConfig{\r\n    Name: \"Account\",\r\n    Fields: graphql.Fields{\r\n        \"id\": &amp;graphql.Field{\r\n            Type: graphql.String,\r\n        },\r\n        \"firstname\": &amp;graphql.Field{\r\n            Type: graphql.String,\r\n        },\r\n        \"lastname\": &amp;graphql.Field{\r\n            Type: graphql.String,\r\n        },\r\n    },\r\n})\r\nblogType := graphql.NewObject(graphql.ObjectConfig{\r\n    Name: \"Blog\",\r\n    Fields: graphql.Fields{\r\n        \"id\": &amp;graphql.Field{\r\n            Type: graphql.String,\r\n        },\r\n        \"account\": &amp;graphql.Field{\r\n            Type: graphql.String,\r\n        },\r\n        \"title\": &amp;graphql.Field{\r\n            Type: graphql.String,\r\n        },\r\n        \"content\": &amp;graphql.Field{\r\n            Type: graphql.String,\r\n        },\r\n    },\r\n})<\/pre>\n<p>\uc18d\uc131 \uc774\ub984\uacfc \uadf8\uc5d0 \ud574\ub2f9\ud558\ub294 \ub370\uc774\ud130 \uc720\ud615\ub9cc \uc815\uc758\ud558\uace0 \uc788\ub2e4\ub294 \uc810\uc5d0 \uc8fc\ubaa9\ud558\uc138\uc694. Go\uc5d0\uc11c \ub370\uc774\ud130 \uad6c\uc870\ub97c \uc815\uc758\ud558\ub294 \ubc29\uc2dd\uacfc \ub9e4\uc6b0 \uc720\uc0ac\ud558\ub2e4\uace0 \ub9d0\uc500\ub4dc\ub838\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc774\uc81c Couchbase Server\uc758 \ub370\uc774\ud130\ub85c \uc2a4\ud0a4\ub9c8\ub97c \ub85c\ub4dc\ud558\ub294 \ub370 \uc9d1\uc911\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<h2>GraphQL\uc744 \uc0ac\uc6a9\ud558\uc5ec NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c \ub370\uc774\ud130 \ucffc\ub9ac\ud558\uae30<\/h2>\n<p>\ud604\uc7ac\ub85c\uc11c\ub294 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc900\ube44\ub97c \uc644\ub8cc\ud558\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. \uc774 \ud29c\ud1a0\ub9ac\uc5bc\uc758 \uc694\uc810\uc740 Couchbase\ub97c \uad6c\uc131\ud558\ub294 \uac83\uc774 \uc544\ub2d9\ub2c8\ub2e4. N1QL\uc744 \uc9c0\uc6d0\ud558\ub294 Couchbase Server, \ubc84\ud0b7, \uc77c\ubd80 \uc778\ub371\uc2a4, \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0 \ub300\ud55c \uc5ed\ud560 \uae30\ubc18 \uc561\uc138\uc2a4 \uc81c\uc5b4 \uacc4\uc815\uc774 \ud544\uc694\ud569\ub2c8\ub2e4.<\/p>\n<p>\uba85\ub839\uc904\uc5d0\uc11c \ub2e4\uc74c \uc904\uc744 \uc2e4\ud589\ud558\uc5ec \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ud328\ud0a4\uc9c0\ub97c \uac00\uc838\uc635\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">go get github.com\/satori\/go.uuid\r\ngo get gopkg.in\/couchbase\/gocb.v1<\/pre>\n<p>\uc704\uc758 \uba85\ub839\uc740 \ubb38\uc11c \ud0a4\uc5d0 \ub300\ud55c UUID \uac12\uc744 \uc0dd\uc131\ud558\uae30 \uc704\ud55c \ud328\ud0a4\uc9c0\uc640 Couchbase Go SDK\ub97c \uac00\uc838\uc635\ub2c8\ub2e4.<\/p>\n<p>\uc6b0\ub9ac\uac00 \uc774\ubbf8 \uc218\ud589\ud55c \ubaa8\ub4e0 \uc791\uc5c5\uc744 \ubb34\uc2dc\ud558\uace0\u00a0<strong>main.go<\/strong> \ud30c\uc77c\uc744 \uc5f4\uace0 \ub2e4\uc74c \ucf54\ub4dc\ub97c \uc0b4\ud3b4\ubcf8 \ud6c4 \uc801\uc808\ud55c \uacf3\uc5d0 \uc801\uc6a9\ud558\uc138\uc694:<\/p>\n<pre class=\"lang:default decode:true\">package main\r\n\r\nimport (\r\n\t\"encoding\/json\"\r\n\t\"fmt\"\r\n\t\"log\"\r\n\t\"net\/http\"\r\n\t\"github.com\/graphql-go\/graphql\"\r\n\tuuid \"github.com\/satori\/go.uuid\"\r\n\tgocb \"gopkg.in\/couchbase\/gocb.v1\"\r\n)\r\n\r\nvar bucket *gocb.Bucket\r\n\r\nfunc main() {\r\n\tfmt.Println(\"Starting application...\")\r\n\tcluster, err := gocb.Connect(\"couchbase:\/\/localhost\")\r\n\tif err != nil {\r\n\t\tlog.Fatal(err)\r\n\t}\r\n\tcluster.Authenticate(gocb.PasswordAuthenticator{Username: \"example\", Password: \"123456\"})\r\n\tbucket, err = cluster.OpenBucket(\"example\", \"\")\r\n\tif err != nil {\r\n\t\tlog.Fatal(err)\r\n\t}\r\n}<\/pre>\n<p>\ub370\uc774\ud130\ubca0\uc774\uc2a4\uc640 \uc0c1\ud638 \uc791\uc6a9\ud560 \ub54c \uc0ac\uc6a9\ud560 \ubc84\ud0b7\uc744 \uc815\uc758\ud588\uc74c\uc744 \uc54c \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc6b0\ub9ac\ub294 Couchbase \ud074\ub7ec\uc2a4\ud130\uc5d0 \uc5f0\uacb0\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. <code>\uba54\uc778<\/code> \ud568\uc218, RBAC \uacc4\uc815\uc73c\ub85c \uc778\uc99d\ud558\uae30, \ubc84\ud0b7 \uc5f4\uae30 \ub4f1 \uc774 \ud29c\ud1a0\ub9ac\uc5bc\uc744 \uc2dc\uc791\ud558\uae30 \uc804\uc5d0 \ubaa8\ub450 \uc815\uc758\ud588\uc5b4\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<p>\ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc774\ubbf8 \ub370\uc774\ud130\uac00 \uc788\ub2e4\uace0 \uac00\uc815\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \uba3c\uc800 \ub370\uc774\ud130\ub97c \ucffc\ub9ac\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \uc774\uc804\uc5d0 \ucd94\uac00\ud55c \ub2e4\uc74c \ucf54\ub4dc \ub369\uc5b4\ub9ac\ub97c \uae30\uc5b5\ud558\uc2dc\ub098\uc694?<\/p>\n<pre class=\"lang:default decode:true\">rootQuery := graphql.NewObject(graphql.ObjectConfig{\r\n    Name: \"Query\",\r\n    Fields: graphql.Fields{ },\r\n})<\/pre>\n<p>\uac01 \ud544\ub4dc\ub294 <code>\ud544\ub4dc<\/code> \uc18d\uc131\uc744 \ucd94\uac00\ud569\ub2c8\ub2e4. \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c \ubaa8\ub4e0 \uacc4\uc815\uc744 \uac00\uc838\uc624\uace0 \uc2f6\ub2e4\uace0 \uac00\uc815\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:default decode:true\">\"accounts\": &amp;graphql.Field{\r\n    Type: graphql.NewList(accountType),\r\n    Resolve: func(p graphql.ResolveParams) (interface{}, error) {\r\n        query := gocb.NewN1qlQuery(\"SELECT META(account).id, account.* FROM example AS account WHERE account.type = 'account'\")\r\n        rows, err := bucket.ExecuteN1qlQuery(query, nil)\r\n        if err != nil {\r\n            return nil, err\r\n        }\r\n        var accounts []Account\r\n        var row Account\r\n        for rows.Next(&amp;row) {\r\n            accounts = append(accounts, row)\r\n        }\r\n        return accounts, nil\r\n    },\r\n},<\/pre>\n<p>\uc704 \ucf54\ub4dc\uc5d0\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 GraphQL \ud544\ub4dc\ub97c \ub9cc\ub4e4\uace0 \uc788\uc2b5\ub2c8\ub2e4. <code>\uacc4\uc815<\/code> \uc758 \ubaa9\ub85d\uc744 \ubc18\ud658\ud569\ub2c8\ub2e4. <code>\uacc4\uc815 \uc720\ud615<\/code> \ub97c \uc2e4\ud589\ud569\ub2c8\ub2e4. \uadf8\ub9ac\uace0 <code>\ud574\uacb0<\/code> \ud568\uc218\uac00 \ubb34\uac70\uc6b4 \uc791\uc5c5\uc744 \uc218\ud589\ud569\ub2c8\ub2e4. \uc120\ud0dd\uc801\uc73c\ub85c \ucffc\ub9ac \ub9e4\uac1c \ubcc0\uc218\ub97c \uc804\ub2ec\ud560 \uc218 \uc788\uc9c0\ub9cc \uc774 \ud2b9\uc815 \ud544\ub4dc\uc5d0\uc11c\ub294 \uadf8\ub807\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uacc4\uc815\uc744 \ucffc\ub9ac\ud558\ub824\uace0 \ud560 \ub54c \uac00\ub2a5\ud55c \ubaa8\ub4e0 \uc18d\uc131\uacfc \uacb0\uacfc\ub97c \ubc18\ud658\ud558\ub294 N1QL \ucffc\ub9ac\ub97c \ub9cc\ub4e4\uace0 \uc788\uc2b5\ub2c8\ub2e4. GraphQL \ucffc\ub9ac\ub294 \uc774\ub7ec\ud55c \uc18d\uc131 \ubc0f \uacb0\uacfc \uc911 \uc5b4\ub5a4 \uac83\uc774 \ud074\ub77c\uc774\uc5b8\ud2b8\uc5d0 \uc804\ub2ec\ub420\uc9c0 \uacb0\uc815\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc2e4\ud589\ud560 \uc218 \uc788\ub294 \ud504\ub7f0\ud2b8\uc5d4\ub4dc \ucffc\ub9ac\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">{\r\n    accounts {\r\n        id,\r\n        firstname\r\n    }\r\n}<\/pre>\n<p>\uc6b0\ub9ac\ub294 <code>id<\/code>, <code>\uc774\ub984<\/code>\ubc0f <code>\uc131<\/code>\uc758 \uacbd\uc6b0, \uc6b0\ub9ac\ub294 <code>id<\/code> \uadf8\ub9ac\uace0 <code>\uc774\ub984<\/code> \ub97c \ubc18\ud658\ud569\ub2c8\ub2e4. \uc2e4\uc81c\ub85c \ucffc\ub9ac\ub97c \uc2e4\ud589\ud558\ub824\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 cURL \ubb38\uc744 \ubc1c\ud589\ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">curl -g 'https:\/\/localhost:8080\/graphql?query={accounts{id,firstname}}'<\/pre>\n<p>GraphQL \ucffc\ub9ac\ub294 \ucffc\ub9ac \ub9e4\uac1c\ubcc0\uc218 \ubcf4\uae30\ub97c \ud1b5\ud574 API \uc5d4\ub4dc\ud3ec\uc778\ud2b8\ub85c \uc804\uc1a1\ub41c\ub2e4\ub294 \uc810\uc744 \uae30\uc5b5\ud558\uc138\uc694.<\/p>\n<p>\ub2e4\ub978 \uac00\ub2a5\ud55c GraphQL \ucffc\ub9ac\ub97c \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \ubaa8\ub4e0 \uacc4\uc815\uc774 \uc544\ub2cc \ud2b9\uc815 \uacc4\uc815\uc5d0 \ub300\ud574 \ucffc\ub9ac\ud558\uace0 \uc2f6\ub2e4\uace0 \uac00\uc815\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \ub2e4\uc74c\uacfc \uac19\uc740 \ud544\ub4dc\ub97c \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">\"account\": &amp;graphql.Field{\r\n    Type: accountType,\r\n    Args: graphql.FieldConfigArgument{\r\n        \"id\": &amp;graphql.ArgumentConfig{\r\n            Type: graphql.NewNonNull(graphql.String),\r\n        },\r\n    },\r\n    Resolve: func(params graphql.ResolveParams) (interface{}, error) {\r\n        var account Account\r\n        account.ID = params.Args[\"id\"].(string)\r\n        _, err := bucket.Get(account.ID, &amp;account)\r\n        if err != nil {\r\n            return nil, err\r\n        }\r\n        return account, nil\r\n    },\r\n},<\/pre>\n<p>\uc774 \ud544\ub4dc\ub294 \ucffc\ub9ac \uc2dc \ud558\ub098\uc758 <code>\uacc4\uc815 \uc720\ud615<\/code>\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc9c0\ub9cc \uc804\ub2ec\ud560 \uc218 \uc788\ub294 \uc778\uc218\uac00 \uc788\uc2b5\ub2c8\ub2e4. \uc6b0\ub9ac\ub294 <code>id<\/code> \uac00 \uc788\uc5b4\uc57c \ud558\uba70 \ubb38\uc790\uc5f4\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. \uc5d0\uc11c <code>\ud574\uacb0<\/code>\ub97c \uc0ac\uc6a9\ud558\uc5ec <code>id<\/code> \ub9e4\uac1c\ubcc0\uc218\ub97c \ucd94\uac00\ud558\uace0 \uc774\ub97c \uc0ac\uc6a9\ud558\uc5ec \ubb38\uc11c \ud0a4\ub85c NoSQL \ubb38\uc11c\ub97c \uac00\uc838\uc635\ub2c8\ub2e4. \uacb0\uacfc\uac00 \ubc18\ud658\ub418\uace0 GraphQL \ucffc\ub9ac\ub97c \ud1b5\ud574 \ud074\ub77c\uc774\uc5b8\ud2b8\ub85c \ub2e4\uc2dc \uc804\uc1a1\ud560 \uc18d\uc131\uc744 \uacb0\uc815\ud569\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\uc74c \ucffc\ub9ac\ub97c \uc785\ub825\ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">{\r\n    account(id:\"2345345435\") {\r\n        firstname,\r\n        lastname\r\n    }\r\n}<\/pre>\n<p>\uc704\uc758 \ucffc\ub9ac\uc5d0\uc11c\ub294 ID\ub97c \uc804\ub2ec\ud558\uace0 <code>\uc774\ub984<\/code> \uadf8\ub9ac\uace0 <code>\uc131<\/code> \ub97c \ubc18\ud658\ud569\ub2c8\ub2e4. \uc774 \ucffc\ub9ac\ub97c \uc2e4\uc81c\ub85c \uc2e4\ud589\ud558\ub824\uba74 \ub2e4\uc74c\uacfc \uac19\uc740 cURL \ubb38\uc744 \uc2e4\ud589\ud558\uba74 \ub429\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">curl -g 'https:\/\/localhost:8080\/graphql?query={account(id:\"2345345435\"){firstname,lastname}}'<\/pre>\n<p>\uc774\uc81c \ud2b9\uc815 \uc0ac\uc6a9\uc790 \uacc4\uc815\uc5d0 \ub300\ud55c \ubaa8\ub4e0 \ube14\ub85c\uadf8\ub97c \ubc18\ud658\ud55c\ub2e4\uace0 \uac00\uc815\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \ub2e8\uacc4\ub294 \ud2b9\uc815 \uacc4\uc815\uc744 \ucffc\ub9ac\ud560 \ub54c \ubcf4\uc558\ub358 \uac83\uacfc \uc720\uc0ac\ud569\ub2c8\ub2e4. \ub2e4\uc74c\uc740 \uc6b0\ub9ac\uc758 <code>rootQuery<\/code>:<\/p>\n<pre class=\"lang:default decode:true\">\"blogs\": &amp;graphql.Field{\r\n    Type: graphql.NewList(blogType),\r\n    Args: graphql.FieldConfigArgument{\r\n        \"account\": &amp;graphql.ArgumentConfig{\r\n            Type: graphql.NewNonNull(graphql.String),\r\n        },\r\n    },\r\n    Resolve: func(params graphql.ResolveParams) (interface{}, error) {\r\n        account := params.Args[\"account\"].(string)\r\n        query := gocb.NewN1qlQuery(\"SELECT META(blog).id, blog.* FROM example AS blog WHERE blog.type = 'blog' AND blog.account = $1\")\r\n        var n1qlParams []interface{}\r\n        n1qlParams = append(n1qlParams, account)\r\n        rows, err := bucket.ExecuteN1qlQuery(query, n1qlParams)\r\n        if err != nil {\r\n            return nil, err\r\n        }\r\n        var blogs []Blog\r\n        var row Blog\r\n        for rows.Next(&amp;row) {\r\n            blogs = append(blogs, row)\r\n        }\r\n        return blogs, nil\r\n    },\r\n},<\/pre>\n<p>\uacb0\uacfc\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \ubaa9\ub85d\uc774 \ud45c\uc2dc\ub429\ub2c8\ub2e4. <code>\ube14\ub85c\uadf8 \uc720\ud615<\/code> \uadf8\ub9ac\uace0 \uc6b0\ub9ac\ub294 \ud544\uc218 <code>\uacc4\uc815<\/code> \ub9e4\uac1c\ubcc0\uc218\ub97c \ubb38\uc790\uc5f4 \ud615\uc2dd\uc73c\ub85c \uc804\ub2ec\ud569\ub2c8\ub2e4. \ub0b4\ubd80\uc758 <code>\ud574\uacb0<\/code> \ud568\uc218\ub97c \uc0ac\uc6a9\ud558\uba74 <code>\uacc4\uc815<\/code> \uac12\uc744 \ub9e4\uac1c\ubcc0\uc218\ub85c \uc124\uc815\ud558\uc5ec \ub9e4\uac1c\ubcc0\uc218\ud654\ub41c N1QL \ucffc\ub9ac\uc5d0 \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \ucffc\ub9ac\ub294 \ud2b9\uc815 \uacc4\uc815\uc5d0 \ub300\ud55c \ubaa8\ub4e0 \ube14\ub85c\uadf8 \ud56d\ubaa9\ub9cc \ubc18\ud658\ud569\ub2c8\ub2e4. <code>\uacc4\uc815<\/code> \uac12\uc785\ub2c8\ub2e4.<\/p>\n<p>\ubaa8\ub4e0 \ube14\ub85c\uadf8\ub97c \uac00\uc838\uc624\uae30 \uc704\ud55c \ucffc\ub9ac\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">{\r\n    blogs(account:\"2345345435\") {\r\n        id,\r\n        title\r\n    }\r\n}<\/pre>\n<p>\uc704\uc758 \ub0b4\uc6a9\uc740 \ud2b9\uc815 \uacc4\uc815\uc744 \ucffc\ub9ac\ud560 \ub54c \ubcf8 \uac83\uacfc \ub9e4\uc6b0 \uc720\uc0ac\ud569\ub2c8\ub2e4. \ubcc0\uc218\ub97c \uc608\uc0c1\ud558\uace0 \uc788\uc73c\uba70, \ubcc0\uc218\uac00 \uc5c6\ub294 <code>id<\/code> \ubc0f <code>title<\/code> \uc18d\uc131\uc785\ub2c8\ub2e4.<\/p>\n<p>\uc9c0\uae08\uae4c\uc9c0\uc758 \ub370\uc774\ud130\ub97c \uae30\ubc18\uc73c\ub85c \ud55c \uaf64 \uae54\ub054\ud55c \ucffc\ub9ac\ub97c \ubcf4\uace0 \uc2f6\uc73c\uc2e0\uac00\uc694? \ub2e4\uc74c \ucffc\ub9ac\ub97c \ud655\uc778\ud574 \ubcf4\uc138\uc694:<\/p>\n<pre class=\"lang:default decode:true\">{\r\n    account(id:\"2345345435\") {\r\n        firstname,\r\n        lastname\r\n    }\r\n    blogs(account:\"2345345435\") {\r\n        title,\r\n        content\r\n    }\r\n}<\/pre>\n<p>\uc704\uc758 \uc608\uc5d0\uc11c\ub294 \ub2e8\uc77c \uc694\uccad\uc744 \ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \ub2e8\uc77c \ucffc\ub9ac\uc774\uc9c0\ub9cc \ud2b9\uc815 \uacc4\uc815\uc5d0 \ub300\ud55c \uacc4\uc815 \ub370\uc774\ud130\uc640 \ube14\ub85c\uadf8 \ub370\uc774\ud130\ub97c \uc694\uccad\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. RESTful API\ub85c \uc774 \uc791\uc5c5\uc744 \uc218\ud589\ud588\ub2e4\uba74 \uc11c\ubc84\uc5d0 \uc5ec\ub7ec \ubc88 \uc694\uccad\ud558\uc5ec \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uc218\uc900\uc758 \uc7a0\uc7ac\uc801 \ubcc0\ud615\uc744 \ub9cc\ub4e4\uc5c8\uc744 \uac83\uc785\ub2c8\ub2e4.<\/p>\n<p>cURL \uba85\ub839\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">curl -g 'https:\/\/localhost:8080\/graphql?query={account(id:\"2345345435\"){firstname,lastname}blogs(account:\"2345345435\"){title,content}}'<\/pre>\n<p>\uc9c0\uae08\uae4c\uc9c0\ub294 \uc77d\uae30 \ucffc\ub9ac\ub9cc \uc218\ud589\ud588\uc2b5\ub2c8\ub2e4. \ub370\uc774\ud130\ub97c \uc0dd\uc131\ud558\uac70\ub098 \ubcc0\uacbd\ud558\ub294 \ubcc0\ud615\uc744 \uc218\ud589\ud558\ub824\uba74 \uc5b4\ub5bb\uac8c \ud574\uc57c \ud560\uae4c\uc694?<\/p>\n<p>GraphQL\uc744 \uc0ac\uc6a9\ud55c \ub370\uc774\ud130 \ubcc0\ud615\uc744 \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub300\uc2e0 <code>rootQuery<\/code>\uc5d0\uc11c \uc791\uc5c5\ud560 \uac83\uc785\ub2c8\ub2e4. <code>rootMutation<\/code>. \ud544\ub4dc\uc758 \uacbd\uc6b0 \ub2e4\uc74c\uc744 \ucd94\uac00\ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">\"createAccount\": &amp;graphql.Field{\r\n    Type: accountType,\r\n    Args: graphql.FieldConfigArgument{\r\n        \"firstname\": &amp;graphql.ArgumentConfig{\r\n            Type: graphql.NewNonNull(graphql.String),\r\n        },\r\n        \"lastname\": &amp;graphql.ArgumentConfig{\r\n            Type: graphql.NewNonNull(graphql.String),\r\n        },\r\n    },\r\n    Resolve: func(params graphql.ResolveParams) (interface{}, error) {\r\n        var account Account\r\n        account.Firstname = params.Args[\"firstname\"].(string)\r\n        account.Lastname = params.Args[\"lastname\"].(string)\r\n        account.Type = \"account\"\r\n        id, _ := uuid.NewV4()\r\n        _, err := bucket.Insert(id.String(), &amp;account, 0)\r\n        if err != nil {\r\n            return nil, err\r\n        }\r\n        account.ID = id.String()\r\n        return account, nil\r\n    },\r\n},<\/pre>\n<p>\uc6b0\ub9ac\uac00 \ubc18\ud658\ud558\ub294 \uac83\uc744 \uc8fc\ubaa9\ud558\uc2ed\uc2dc\uc624. <code>\uacc4\uc815 \uc720\ud615<\/code> \ucffc\ub9ac\uc640 \ud568\uaed8 \ub450 \uac1c\uc758 \ub9e4\uac1c\ubcc0\uc218\uac00 \uc804\ub2ec\ub420 \uac83\uc73c\ub85c \uc608\uc0c1\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub7ec\ub098 \uc804\ub7b5\uc740 \uc2e4\uc81c\ub85c \ud06c\uac8c \ub2e4\ub974\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc5d0\uc11c <code>\ud574\uacb0<\/code> \ud568\uc218\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub9e4\uac1c\ubcc0\uc218\ub97c \uac00\uc838\uc640 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc0c8 \uacc4\uc815\uc744 \ub9cc\ub4dc\ub294 \ub370 \uc0ac\uc6a9\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc774\uac83\uc740 \uc2a4\ud0a4\ub9c8\uc5d0 \ubcc0\uc774\ub85c \uc5f0\uacb0\ub418\uc5b4 \uc788\uae30 \ub54c\ubb38\uc5d0 \ucffc\ub9ac \ubc29\uc2dd\uc774 \ub2ec\ub77c\uc9d1\ub2c8\ub2e4.<\/p>\n<p>\uba3c\uc800 \uc2e4\ud589\ud560 \ucffc\ub9ac\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">mutation+_ {\r\n    createAccount(firstname:\"Matt\",lastname:\"Groves\") {\r\n        id,\r\n        firstname,\r\n        lastname\r\n    }\r\n}<\/pre>\n<p>\uc55e\uc5d0 \ub2e4\uc74c\uacfc \uac19\uc740 \ub2e8\uc5b4\uac00 \ubd99\ub294 \uac83\uc744 \uc8fc\ubaa9\ud558\uc138\uc694. <code>\ub3cc\uc5f0\ubcc0\uc774<\/code>. cURL\uc5d0\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \ud45c\uc2dc\ub429\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">curl -g 'https:\/\/localhost:8080\/graphql?query=mutation+_{createAccount(firstname:\"Matt\",lastname:\"Groves\"){id,firstname,lastname}}'<\/pre>\n<p>\uc774\uc81c \ucffc\ub9ac \ub610\ub294 \ubcc0\ud615\uc744 \uc218\ud589\ud558\ub294 \ud544\ub4dc\ub97c \uacc4\uc18d \ub9cc\ub4e4 \uc218 \uc788\uc9c0\ub9cc \ub2e8\uacc4\ub294 \ub3d9\uc77c\ud569\ub2c8\ub2e4. \uc774 \ud2b9\uc815 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uc544\uc774\ub514\uc5b4\uc5d0 \uacc4\uc18d \uae30\uc5ec\ud558\ub294 \uac83\uc740 \uc5ec\ub7ec\ubd84\uc758 \uc0c1\uc0c1\ub825\uc5d0 \ub9e1\uae30\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<h2>\uacb0\ub860<\/h2>\n<p>\ubc29\uae08 \uc0ac\uc6a9 \ubc29\ubc95\uc744 \ud655\uc778\ud558\uc168\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/graphql.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">GraphQL<\/a> \ub97c \uc0ac\uc6a9\ud558\ub294 Golang \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \ub370\uc774\ud130\ub97c \ucffc\ub9ac\ud558\ub824\uba74 <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/resources\/why-nosql\/\">NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4<\/a>. GraphQL\uc740 \uc0ac\uc6a9\uc790\uac00 \ucd94\uc801\ud574\uc57c \ud558\ub294 \uc5ec\ub7ec RESTful API \uc5d4\ub4dc\ud3ec\uc778\ud2b8\ub97c \ub04a\uc784\uc5c6\uc774 \uc0dd\uc131\ud558\ub294 \ub300\uc2e0 \uc0ac\uc6a9\uc790\uac00 \ub2e8\uc77c \uc694\uccad\uc5d0\uc11c \uc6d0\ud558\ub294 \ub370\uc774\ud130\ub97c \uc815\uc758\ud558\ub3c4\ub85d \ud558\ub824\ub294 \uacbd\uc6b0\uc5d0 \ub9e4\uc6b0 \uc720\uc6a9\ud569\ub2c8\ub2e4. \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \ucffc\ub9ac\ud560 \ub54c GraphQL\uc774 \uc774\ub97c \ub300\uccb4\ud560 \uc218 \uc5c6\ub2e4\ub294 \uc810\uc5d0 \uc720\uc758\ud558\uc138\uc694. \uc5ec\uc804\ud788 \ub2e4\uc74c\uc5d0\uc11c \uc801\uc808\ud55c N1QL \ucffc\ub9ac\ub97c \ub9cc\ub4e4\uc5b4\uc57c \ud569\ub2c8\ub2e4. <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/\" target=\"_blank\" rel=\"noopener noreferrer\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4<\/a>. GraphQL\uc740 \ud074\ub77c\uc774\uc5b8\ud2b8 \uc218\uc900\uc5d0\uc11c\ub9cc \uc791\ub3d9\ud569\ub2c8\ub2e4.<\/p>\n<p>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc640 \ud568\uaed8 Go\ub97c \uc0ac\uc6a9\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud55c \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 \ub2e4\uc74c\uacfc \uac19\uc774 \ud655\uc778\ud558\uc138\uc694. <a href=\"https:\/\/developer.couchbase.com\" target=\"_blank\" rel=\"noopener noreferrer\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uac1c\ubc1c\uc790 \ud3ec\ud138<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>A few weeks ago I had mentioned that I was learning about the increasingly popular GraphQL and how it can be a replacement to the common RESTful API. In my previous example, we saw how to create a GraphQL application [&hellip;]<\/p>","protected":false},"author":63,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1814,1815,1816,1820,1812],"tags":[2210,1725],"ppma_author":[9032],"class_list":["post-5089","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-application-design","category-best-practices-and-tutorials","category-couchbase-server","category-golang","category-n1ql-query","tag-graphql","tag-nosql-database"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.5 (Yoast SEO v26.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Using GraphQL with Golang and a NoSQL Database<\/title>\n<meta name=\"description\" content=\"Learn how to create a web application using the Go programming language and a Couchbase NoSQL database that can be queried using GraphQL from the front-end.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/ko\/using-graphql-with-golang-and-a-nosql-database\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Using GraphQL with Golang and a NoSQL Database\" \/>\n<meta property=\"og:description\" content=\"Learn how to create a web application using the Go programming language and a Couchbase NoSQL database that can be queried using GraphQL from the front-end.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/ko\/using-graphql-with-golang-and-a-nosql-database\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/thepolyglotdeveloper\" \/>\n<meta property=\"article:published_time\" content=\"2018-05-08T16:00:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T01:45:29+00:00\" \/>\n<meta name=\"author\" content=\"Nic Raboy, Developer Advocate, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@nraboy\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nic Raboy, Developer Advocate, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-graphql-with-golang-and-a-nosql-database\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-graphql-with-golang-and-a-nosql-database\/\"},\"author\":{\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1\"},\"headline\":\"Using GraphQL with Golang and a NoSQL Database\",\"datePublished\":\"2018-05-08T16:00:31+00:00\",\"dateModified\":\"2025-06-14T01:45:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-graphql-with-golang-and-a-nosql-database\/\"},\"wordCount\":1481,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-graphql-with-golang-and-a-nosql-database\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"graphql\",\"NoSQL Database\"],\"articleSection\":[\"Application Design\",\"Best Practices and Tutorials\",\"Couchbase Server\",\"GoLang\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/using-graphql-with-golang-and-a-nosql-database\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-graphql-with-golang-and-a-nosql-database\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/using-graphql-with-golang-and-a-nosql-database\/\",\"name\":\"Using GraphQL with Golang and a NoSQL Database\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-graphql-with-golang-and-a-nosql-database\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-graphql-with-golang-and-a-nosql-database\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2018-05-08T16:00:31+00:00\",\"dateModified\":\"2025-06-14T01:45:29+00:00\",\"description\":\"Learn how to create a web application using the Go programming language and a Couchbase NoSQL database that can be queried using GraphQL from the front-end.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-graphql-with-golang-and-a-nosql-database\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/using-graphql-with-golang-and-a-nosql-database\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-graphql-with-golang-and-a-nosql-database\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-graphql-with-golang-and-a-nosql-database\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using GraphQL with Golang and a NoSQL Database\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1\",\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8863514d8bed0cf6080f23db40e00354\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g\",\"caption\":\"Nic Raboy, Developer Advocate, Couchbase\"},\"description\":\"Nic Raboy is an advocate of modern web and mobile development technologies. He has experience in Java, JavaScript, Golang and a variety of frameworks such as Angular, NativeScript, and Apache Cordova. Nic writes about his development experiences related to making web and mobile development easier to understand.\",\"sameAs\":[\"https:\/\/www.thepolyglotdeveloper.com\",\"https:\/\/www.facebook.com\/thepolyglotdeveloper\",\"https:\/\/x.com\/nraboy\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/ko\/author\/nic-raboy-2\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Golang \ubc0f NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc640 \ud568\uaed8 GraphQL \uc0ac\uc6a9","description":"Go \ud504\ub85c\uadf8\ub798\ubc0d \uc5b8\uc5b4\uc640 \ud504\ub7f0\ud2b8\uc5d4\ub4dc\uc5d0\uc11c GraphQL\uc744 \uc0ac\uc6a9\ud558\uc5ec \ucffc\ub9ac\ud560 \uc218 \uc788\ub294 Couchbase NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc6f9 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ub9cc\ub4dc\ub294 \ubc29\ubc95\uc744 \uc54c\uc544\ubcf4\uc138\uc694.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/ko\/using-graphql-with-golang-and-a-nosql-database\/","og_locale":"ko_KR","og_type":"article","og_title":"Using GraphQL with Golang and a NoSQL Database","og_description":"Learn how to create a web application using the Go programming language and a Couchbase NoSQL database that can be queried using GraphQL from the front-end.","og_url":"https:\/\/www.couchbase.com\/blog\/ko\/using-graphql-with-golang-and-a-nosql-database\/","og_site_name":"The Couchbase Blog","article_author":"https:\/\/www.facebook.com\/thepolyglotdeveloper","article_published_time":"2018-05-08T16:00:31+00:00","article_modified_time":"2025-06-14T01:45:29+00:00","author":"Nic Raboy, Developer Advocate, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@nraboy","twitter_misc":{"Written by":"Nic Raboy, Developer Advocate, Couchbase","Est. reading time":"9\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/using-graphql-with-golang-and-a-nosql-database\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/using-graphql-with-golang-and-a-nosql-database\/"},"author":{"name":"Nic Raboy, Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1"},"headline":"Using GraphQL with Golang and a NoSQL Database","datePublished":"2018-05-08T16:00:31+00:00","dateModified":"2025-06-14T01:45:29+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/using-graphql-with-golang-and-a-nosql-database\/"},"wordCount":1481,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/using-graphql-with-golang-and-a-nosql-database\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["graphql","NoSQL Database"],"articleSection":["Application Design","Best Practices and Tutorials","Couchbase Server","GoLang","SQL++ \/ N1QL Query"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/using-graphql-with-golang-and-a-nosql-database\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/using-graphql-with-golang-and-a-nosql-database\/","url":"https:\/\/www.couchbase.com\/blog\/using-graphql-with-golang-and-a-nosql-database\/","name":"Golang \ubc0f NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc640 \ud568\uaed8 GraphQL \uc0ac\uc6a9","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/using-graphql-with-golang-and-a-nosql-database\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/using-graphql-with-golang-and-a-nosql-database\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2018-05-08T16:00:31+00:00","dateModified":"2025-06-14T01:45:29+00:00","description":"Go \ud504\ub85c\uadf8\ub798\ubc0d \uc5b8\uc5b4\uc640 \ud504\ub7f0\ud2b8\uc5d4\ub4dc\uc5d0\uc11c GraphQL\uc744 \uc0ac\uc6a9\ud558\uc5ec \ucffc\ub9ac\ud560 \uc218 \uc788\ub294 Couchbase NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc6f9 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ub9cc\ub4dc\ub294 \ubc29\ubc95\uc744 \uc54c\uc544\ubcf4\uc138\uc694.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/using-graphql-with-golang-and-a-nosql-database\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/using-graphql-with-golang-and-a-nosql-database\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/using-graphql-with-golang-and-a-nosql-database\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/using-graphql-with-golang-and-a-nosql-database\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Using GraphQL with Golang and a NoSQL Database"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","description":"NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4, Couchbase","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1","name":"Nic Raboy, \uac1c\ubc1c\uc790 \uc639\ud638\uc790, Couchbase","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8863514d8bed0cf6080f23db40e00354","url":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","caption":"Nic Raboy, Developer Advocate, Couchbase"},"description":"\ub2c9 \ub77c\ubcf4\uc774\ub294 \ucd5c\uc2e0 \uc6f9 \ubc0f \ubaa8\ubc14\uc77c \uac1c\ubc1c \uae30\uc220\uc744 \uc639\ud638\ud558\ub294 \uc0ac\ub78c\uc785\ub2c8\ub2e4. \uadf8\ub294 Java, JavaScript, Golang \ubc0f Angular, NativeScript, Apache Cordova\uc640 \uac19\uc740 \ub2e4\uc591\ud55c \ud504\ub808\uc784\uc6cc\ud06c\uc5d0 \ub300\ud55c \uacbd\ud5d8\uc774 \uc788\uc2b5\ub2c8\ub2e4. Nic\uc740 \uc6f9 \ubc0f \ubaa8\ubc14\uc77c \uac1c\ubc1c\uc744 \ubcf4\ub2e4 \uc27d\uac8c \uc774\ud574\ud560 \uc218 \uc788\ub3c4\ub85d \uc790\uc2e0\uc758 \uac1c\ubc1c \uacbd\ud5d8\uc5d0 \ub300\ud574 \uae00\uc744 \uc4f0\uace0 \uc788\uc2b5\ub2c8\ub2e4.","sameAs":["https:\/\/www.thepolyglotdeveloper.com","https:\/\/www.facebook.com\/thepolyglotdeveloper","https:\/\/x.com\/nraboy"],"url":"https:\/\/www.couchbase.com\/blog\/ko\/author\/nic-raboy-2\/"}]}},"authors":[{"term_id":9032,"user_id":63,"is_guest":0,"slug":"nic-raboy-2","display_name":"Nic Raboy, Developer Advocate, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","author_category":"","last_name":"Raboy","first_name":"Nic","job_title":"","user_url":"https:\/\/www.thepolyglotdeveloper.com","description":"\ub2c9 \ub77c\ubcf4\uc774\ub294 \ucd5c\uc2e0 \uc6f9 \ubc0f \ubaa8\ubc14\uc77c \uac1c\ubc1c \uae30\uc220\uc744 \uc639\ud638\ud558\ub294 \uc0ac\ub78c\uc785\ub2c8\ub2e4. \uadf8\ub294 Java, JavaScript, Golang \ubc0f Angular, NativeScript, Apache Cordova\uc640 \uac19\uc740 \ub2e4\uc591\ud55c \ud504\ub808\uc784\uc6cc\ud06c\uc5d0 \ub300\ud55c \uacbd\ud5d8\uc774 \uc788\uc2b5\ub2c8\ub2e4. Nic\uc740 \uc6f9 \ubc0f \ubaa8\ubc14\uc77c \uac1c\ubc1c\uc744 \ubcf4\ub2e4 \uc27d\uac8c \uc774\ud574\ud560 \uc218 \uc788\ub3c4\ub85d \uc790\uc2e0\uc758 \uac1c\ubc1c \uacbd\ud5d8\uc5d0 \ub300\ud574 \uae00\uc744 \uc4f0\uace0 \uc788\uc2b5\ub2c8\ub2e4."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/5089","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/users\/63"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/comments?post=5089"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/5089\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media?parent=5089"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=5089"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=5089"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=5089"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}