{"id":3974,"date":"2017-10-02T07:00:08","date_gmt":"2017-10-02T14:00:08","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=3974"},"modified":"2023-09-09T02:30:23","modified_gmt":"2023-09-09T09:30:23","slug":"create-restful-api-node-js-hapi-couchbase-nosql","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/create-restful-api-node-js-hapi-couchbase-nosql\/","title":{"rendered":"Crear una API RESTful con Node.js, Hapi y Couchbase NoSQL"},"content":{"rendered":"<p>Desarrollar aplicaciones Node.js con Express es sin duda una opci\u00f3n muy popular, sin embargo no es la \u00fanica opci\u00f3n y puede que ni siquiera sea la mejor. Recientemente empec\u00e9 a investigar <a href=\"https:\/\/hapijs.com\/\" target=\"_blank\" rel=\"noopener\">Hapi<\/a> que se define a s\u00ed mismo como un marco para servicios, algo que no exist\u00eda exactamente cuando apareci\u00f3 Express.<\/p>\n<p>Anteriormente hab\u00eda escrito sobre <a href=\"https:\/\/www.thepolyglotdeveloper.com\/2015\/10\/create-a-full-stack-app-using-node-js-couchbase-server\/\" target=\"_blank\" rel=\"noopener\">creaci\u00f3n de una API RESTful con Node.js y Express<\/a>pero esta vez vamos a explorar la posibilidad de hacer lo mismo con Hapi.<\/p>\n<p><!--more--><\/p>\n<p>Antes de invertir demasiado en el c\u00f3digo, tenemos que averiguar qu\u00e9 es exactamente lo que vamos a construir. El objetivo aqu\u00ed es crear una aplicaci\u00f3n de dos puntos finales. Un punto final debe permitirnos crear datos en la base de datos y el otro debe permitirnos leer de la base de datos.<\/p>\n<p>Cree un nuevo directorio de proyecto en alg\u00fan lugar de su ordenador y ejecute el siguiente comando desde el s\u00edmbolo del sistema dentro de ese directorio:<\/p>\n<pre class=\"lang:default decode:true\">npm init -y<\/pre>\n<p>El comando anterior crear\u00e1 un nuevo proyecto Node.js estableciendo un directorio\u00a0<strong>paquete.json<\/strong> archivo. El siguiente paso es instalar cada una de las dependencias del proyecto.<\/p>\n<p>Ejecute lo siguiente desde la l\u00ednea de comandos:<\/p>\n<pre class=\"lang:default decode:true\">npm install couchbase hapi joi uuid --save<\/pre>\n<p>El comando anterior descargar\u00e1 el SDK de Couchbase Node.js, el framework Hapi, Joi para la validaci\u00f3n de datos, y un paquete para generar valores UUID para representar nuestras claves de documentos NoSQL.<\/p>\n<p>Siga adelante y cree un\u00a0<strong>app.js<\/strong> dentro de su proyecto. Aqu\u00ed es donde tendremos toda nuestra informaci\u00f3n de enrutamiento y l\u00f3gica de base de datos. Abra este\u00a0<strong>app.js<\/strong> e incluya el siguiente c\u00f3digo JavaScript:<\/p>\n<pre class=\"lang:default decode:true\">const Hapi = require(\"hapi\");\r\nconst Couchbase = require(\"couchbase\");\r\nconst UUID = require(\"uuid\");\r\nconst Joi = require(\"joi\");\r\n\r\nconst server = new Hapi.Server();\r\nconst N1qlQuery = Couchbase.N1qlQuery;\r\n\r\nconst cluster = new Couchbase.Cluster(\"https:\/\/localhost\");\r\nconst bucket = cluster.openBucket(\"default\", \"\");\r\n\r\nserver.connection({ \"host\": \"localhost\", \"port\": 3000 });\r\n\r\nserver.route({\r\n    method: \"GET\",\r\n    path: \"\/\",\r\n    handler: (request, response) =&gt; {\r\n        return response(\"Hello World\");\r\n    }\r\n});\r\n\r\nserver.start(error =&gt; {\r\n    if(error) {\r\n        throw error;\r\n    }\r\n    console.log(\"Listening at \" + server.info.uri);\r\n});<\/pre>\n<p>El c\u00f3digo anterior nos pondr\u00e1 en marcha. Importa cada una de las dependencias de nuestro proyecto, inicializa Hapi para un host y puerto espec\u00edficos, y establece una conexi\u00f3n con Couchbase. Tambi\u00e9n hemos definido una \u00fanica ruta para representar nuestra ruta ra\u00edz.<\/p>\n<p>Para este ejemplo, Couchbase se ejecutar\u00e1 localmente y utilizaremos un Bucket llamado <code>por defecto<\/code>. Para obtener informaci\u00f3n sobre la instalaci\u00f3n de Couchbase, consulte mis tutoriales de <a href=\"https:\/\/www.youtube.com\/watch?v=L1wNemXGd9Q\" target=\"_blank\" rel=\"noopener\">Mac<\/a>, <a href=\"https:\/\/www.youtube.com\/watch?v=z8BcuXDJrDY\" target=\"_blank\" rel=\"noopener\">Linux<\/a>y <a href=\"https:\/\/www.youtube.com\/watch?v=dZpnANelV2M\" target=\"_blank\" rel=\"noopener\">Windows<\/a>.<\/p>\n<p>Ahora podemos preocuparnos de nuestros dos puntos finales que interact\u00faan con la base de datos.<\/p>\n<p>El primer punto final, y probablemente el m\u00e1s sencillo, servir\u00e1 para devolver una lista de documentos, en este caso personas, que se hayan creado previamente:<\/p>\n<pre class=\"lang:default decode:true\">server.route({\r\n    method: \"GET\",\r\n    path: \"\/people\",\r\n    handler: (request, response) =&gt; {\r\n        var statement = \"SELECT `\" + bucket._name + \"`.* FROM `\" + bucket._name + \"` WHERE type = 'person'\";\r\n        var query = N1qlQuery.fromString(statement);\r\n        bucket.query(query, (error, result) =&gt; {\r\n            if(error) {\r\n                return response(error).code(500);\r\n            }\r\n            return response(result);\r\n        });\r\n    }\r\n});<\/pre>\n<p>F\u00edjese en el <code>manipulador<\/code> m\u00e9todo. En \u00e9l construimos una consulta N1QL que obtiene todos los documentos que tienen un <code>tipo<\/code> que coincida con <code>persona<\/code>. Esto significa que podemos tener muchos otros tipos de documentos que no ser\u00e1n recogidos por nuestra consulta.<\/p>\n<p>Si hay alg\u00fan problema con la consulta, devolveremos un error con un c\u00f3digo de respuesta 500, de lo contrario devolveremos los resultados de la consulta.<\/p>\n<p>El siguiente endpoint es donde hacemos uso de Joi para la validaci\u00f3n de datos. Echa un vistazo al siguiente c\u00f3digo JavaScript:<\/p>\n<pre class=\"lang:default decode:true\">server.route({\r\n    method: \"POST\",\r\n    path: \"\/person\",\r\n    config: {\r\n        validate: {\r\n            payload: {\r\n                firstname: Joi.string().required(),\r\n                lastname: Joi.string().required(),\r\n                type: Joi.any().forbidden().default(\"person\"),\r\n                timestamp: Joi.any().forbidden().default((new Date()).getTime())\r\n            }\r\n        }\r\n    },\r\n    handler: (request, response) =&gt; {\r\n        bucket.insert(UUID.v4(), request.payload, (error, result) =&gt; {\r\n            if(error) {\r\n                return response(error).code(500);\r\n            }\r\n            return response(request.payload);\r\n        });\r\n    }\r\n});<\/pre>\n<p>Cuando un cliente intenta consumir desde este endpoint, la validaci\u00f3n ocurre como parte de Hapi. En este proceso de validaci\u00f3n inspeccionamos la carga \u00fatil y nos aseguramos de que cada una de nuestras propiedades cumple los criterios. En este caso, tanto <code>nombre<\/code> y <code>apellido<\/code> deben estar presentes. Est\u00e1 prohibido <code>tipo<\/code> y <code>marca de tiempo<\/code> en el cuerpo de la petici\u00f3n. Si existen, se devolver\u00e1 un error. Si no existen, se utilizar\u00e1 un valor por defecto.<\/p>\n<p>Si nuestra validaci\u00f3n pasa, podemos insertar los datos en Couchbase con un id \u00fanico. Los datos tambi\u00e9n ser\u00e1n devueltos en la respuesta.<\/p>\n<h2>Conclusi\u00f3n<\/h2>\n<p>Acaba de ver c\u00f3mo crear una API RESTful muy sencilla con Hapi y <a href=\"https:\/\/www.couchbase.com\/blog\/es\/\" target=\"_blank\" rel=\"noopener\">Servidor Couchbase<\/a>. He estado usando Express desde el principio, pero cuando se trata de Hapi, siento que fue mucho mejor dise\u00f1ado para la creaci\u00f3n de servicios web. Sin embargo, ambos har\u00e1n el trabajo y si quieres ver una alternativa a Express, echa un vistazo a esto <a href=\"https:\/\/www.thepolyglotdeveloper.com\/2015\/10\/create-a-full-stack-app-using-node-js-couchbase-server\/\" target=\"_blank\" rel=\"noopener\">tutorial anterior<\/a> Escrib\u00ed.<\/p>\n<p>Para obtener m\u00e1s informaci\u00f3n sobre el uso de Couchbase con Node.js, consulte la p\u00e1gina <a href=\"https:\/\/www.couchbase.com\/blog\/es\/developers\/\" target=\"_blank\" rel=\"noopener\">Portal para desarrolladores de Couchbase<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Developing Node.js applications with Express is no doubt a very popular option, however it isn&#8217;t the only option and it may not even be the best option. I recently started looking into Hapi which defines itself as being a framework [&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,1822],"tags":[1393,1745],"ppma_author":[9032],"class_list":["post-3974","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-application-design","category-best-practices-and-tutorials","category-couchbase-server","category-node-js","tag-api","tag-restful"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Create a RESTful API with Node.js, Hapi, and Couchbase NoSQL<\/title>\n<meta name=\"description\" content=\"Learn how to create a RESTful API with Couchbase NoSQL, N1QL, and the efficient Hapi framework for Node.js\" \/>\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\/es\/create-restful-api-node-js-hapi-couchbase-nosql\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Create a RESTful API with Node.js, Hapi, and Couchbase NoSQL\" \/>\n<meta property=\"og:description\" content=\"Learn how to create a RESTful API with Couchbase NoSQL, N1QL, and the efficient Hapi framework for Node.js\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/create-restful-api-node-js-hapi-couchbase-nosql\/\" \/>\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=\"2017-10-02T14:00:08+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-09-09T09:30:23+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=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/create-restful-api-node-js-hapi-couchbase-nosql\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/create-restful-api-node-js-hapi-couchbase-nosql\/\"},\"author\":{\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1\"},\"headline\":\"Create a RESTful API with Node.js, Hapi, and Couchbase NoSQL\",\"datePublished\":\"2017-10-02T14:00:08+00:00\",\"dateModified\":\"2023-09-09T09:30:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/create-restful-api-node-js-hapi-couchbase-nosql\/\"},\"wordCount\":638,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/create-restful-api-node-js-hapi-couchbase-nosql\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"API\",\"restful\"],\"articleSection\":[\"Application Design\",\"Best Practices and Tutorials\",\"Couchbase Server\",\"Node.js\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/create-restful-api-node-js-hapi-couchbase-nosql\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/create-restful-api-node-js-hapi-couchbase-nosql\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/create-restful-api-node-js-hapi-couchbase-nosql\/\",\"name\":\"Create a RESTful API with Node.js, Hapi, and Couchbase NoSQL\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/create-restful-api-node-js-hapi-couchbase-nosql\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/create-restful-api-node-js-hapi-couchbase-nosql\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-10-02T14:00:08+00:00\",\"dateModified\":\"2023-09-09T09:30:23+00:00\",\"description\":\"Learn how to create a RESTful API with Couchbase NoSQL, N1QL, and the efficient Hapi framework for Node.js\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/create-restful-api-node-js-hapi-couchbase-nosql\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/create-restful-api-node-js-hapi-couchbase-nosql\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/create-restful-api-node-js-hapi-couchbase-nosql\/#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\/create-restful-api-node-js-hapi-couchbase-nosql\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create a RESTful API with Node.js, Hapi, and Couchbase NoSQL\"}]},{\"@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\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@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\":\"es\",\"@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\/es\/author\/nic-raboy-2\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Crear una API RESTful con Node.js, Hapi y Couchbase NoSQL","description":"Aprende a crear una API RESTful con Couchbase NoSQL, N1QL y el eficiente framework Hapi para Node.js.","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\/es\/create-restful-api-node-js-hapi-couchbase-nosql\/","og_locale":"es_MX","og_type":"article","og_title":"Create a RESTful API with Node.js, Hapi, and Couchbase NoSQL","og_description":"Learn how to create a RESTful API with Couchbase NoSQL, N1QL, and the efficient Hapi framework for Node.js","og_url":"https:\/\/www.couchbase.com\/blog\/es\/create-restful-api-node-js-hapi-couchbase-nosql\/","og_site_name":"The Couchbase Blog","article_author":"https:\/\/www.facebook.com\/thepolyglotdeveloper","article_published_time":"2017-10-02T14:00:08+00:00","article_modified_time":"2023-09-09T09:30:23+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":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/create-restful-api-node-js-hapi-couchbase-nosql\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/create-restful-api-node-js-hapi-couchbase-nosql\/"},"author":{"name":"Nic Raboy, Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1"},"headline":"Create a RESTful API with Node.js, Hapi, and Couchbase NoSQL","datePublished":"2017-10-02T14:00:08+00:00","dateModified":"2023-09-09T09:30:23+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/create-restful-api-node-js-hapi-couchbase-nosql\/"},"wordCount":638,"commentCount":1,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/create-restful-api-node-js-hapi-couchbase-nosql\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["API","restful"],"articleSection":["Application Design","Best Practices and Tutorials","Couchbase Server","Node.js"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/create-restful-api-node-js-hapi-couchbase-nosql\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/create-restful-api-node-js-hapi-couchbase-nosql\/","url":"https:\/\/www.couchbase.com\/blog\/create-restful-api-node-js-hapi-couchbase-nosql\/","name":"Crear una API RESTful con Node.js, Hapi y Couchbase NoSQL","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/create-restful-api-node-js-hapi-couchbase-nosql\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/create-restful-api-node-js-hapi-couchbase-nosql\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-10-02T14:00:08+00:00","dateModified":"2023-09-09T09:30:23+00:00","description":"Aprende a crear una API RESTful con Couchbase NoSQL, N1QL y el eficiente framework Hapi para Node.js.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/create-restful-api-node-js-hapi-couchbase-nosql\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/create-restful-api-node-js-hapi-couchbase-nosql\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/create-restful-api-node-js-hapi-couchbase-nosql\/#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\/create-restful-api-node-js-hapi-couchbase-nosql\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Create a RESTful API with Node.js, Hapi, and Couchbase NoSQL"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"El blog de Couchbase","description":"Couchbase, la base de datos NoSQL","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":"es"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"El blog de Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@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, Defensor del Desarrollador, Couchbase","image":{"@type":"ImageObject","inLanguage":"es","@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 es un defensor de las tecnolog\u00edas modernas de desarrollo web y m\u00f3vil. Tiene experiencia en Java, JavaScript, Golang y una variedad de frameworks como Angular, NativeScript y Apache Cordova. Nic escribe sobre sus experiencias de desarrollo relacionadas con hacer el desarrollo web y m\u00f3vil m\u00e1s f\u00e1cil de entender.","sameAs":["https:\/\/www.thepolyglotdeveloper.com","https:\/\/www.facebook.com\/thepolyglotdeveloper","https:\/\/x.com\/nraboy"],"url":"https:\/\/www.couchbase.com\/blog\/es\/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":"Nic Raboy es un defensor de las tecnolog\u00edas modernas de desarrollo web y m\u00f3vil. Tiene experiencia en Java, JavaScript, Golang y una variedad de frameworks como Angular, NativeScript y Apache Cordova. Nic escribe sobre sus experiencias de desarrollo relacionadas con hacer el desarrollo web y m\u00f3vil m\u00e1s f\u00e1cil de entender."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/3974","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/users\/63"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=3974"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/3974\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=3974"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=3974"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=3974"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=3974"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}