{"id":12883,"date":"2025-01-10T02:24:20","date_gmt":"2025-01-10T05:24:20","guid":{"rendered":"https:\/\/wenuwebs.com\/?p=12883"},"modified":"2025-01-10T02:33:22","modified_gmt":"2025-01-10T05:33:22","slug":"como-crear-una-api-rest-con-nestjs-y-postgresql-paso-a-paso","status":"publish","type":"post","link":"https:\/\/wenuwebs.com\/en\/como-crear-una-api-rest-con-nestjs-y-postgresql-paso-a-paso\/","title":{"rendered":"C\u00f3mo crear una API REST con NestJS y PostgreSQL paso a paso"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"12883\" class=\"elementor elementor-12883\" data-elementor-settings=\"{&quot;ha_cmc_init_switcher&quot;:&quot;no&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-610cb42 e-flex e-con-boxed e-con e-parent\" data-id=\"610cb42\" data-element_type=\"container\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-14cb296 elementor-widget elementor-widget-text-editor\" data-id=\"14cb296\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p data-pm-slice=\"1 1 []\">Las APIs REST son fundamentales en el desarrollo de aplicaciones modernas, permitiendo la comunicaci\u00f3n entre clientes y servidores. NestJS, un framework basado en Node.js y TypeScript, es una excelente opci\u00f3n para crear APIs escalables y eficientes. En este art\u00edculo, aprender\u00e1s c\u00f3mo desarrollar una API REST con NestJS y PostgreSQL paso a paso.<\/p><h2>1. Instalaci\u00f3n de NestJS y configuraci\u00f3n del proyecto<\/h2><p>Antes de comenzar, instala NestJS globalmente si a\u00fan no lo tienes:<\/p><pre><code>npm install -g @nestjs\/cli<\/code><\/pre><p>Luego, crea un nuevo proyecto con el siguiente comando:<\/p><pre><code>nest new my-api<\/code><\/pre><p>Navega al directorio del proyecto y ejecuta:<\/p><pre><code>cd my-api &amp;&amp; npm run start:dev<\/code><\/pre><h2>2. Instalaci\u00f3n y configuraci\u00f3n de PostgreSQL<\/h2><p>PostgreSQL es una base de datos relacional potente y ampliamente utilizada. Para instalarla en tu sistema:<\/p><ul data-spread=\"false\"><li><p>En Linux\/macOS: <code>sudo apt install postgresql<\/code> o <code>brew install postgresql<\/code><\/p><\/li><li><p>En Windows: Desc\u00e1rgalo desde <a href=\"https:\/\/www.postgresql.org\/\">postgresql.org<\/a><\/p><\/li><\/ul><p>Configura el acceso a la base de datos y crea una nueva base de datos:<\/p><pre><code>CREATE DATABASE my_database;\nCREATE USER my_user WITH ENCRYPTED PASSWORD 'mypassword';\nGRANT ALL PRIVILEGES ON DATABASE my_database TO my_user;<\/code><\/pre><h2>3. Instalaci\u00f3n del ORM TypeORM en NestJS<\/h2><p>Para interactuar con PostgreSQL en NestJS, usa TypeORM. Inst\u00e1lalo con:<\/p><pre><code>npm install @nestjs\/typeorm typeorm pg<\/code><\/pre><p>Configura TypeORM en <code>app.module.ts<\/code>:<\/p><pre><code>import { Module } from '@nestjs\/common';\nimport { TypeOrmModule } from '@nestjs\/typeorm';\n\n@Module({\n  imports: [\n    TypeOrmModule.forRoot({\n      type: 'postgres',\n      host: 'localhost',\n      port: 5432,\n      username: 'my_user',\n      password: 'mypassword',\n      database: 'my_database',\n      autoLoadEntities: true,\n      synchronize: true,\n    }),\n  ],\n})\nexport class AppModule {}<\/code><\/pre><h2>4. Creaci\u00f3n de una entidad y servicio REST<\/h2><p>Define una entidad en <code>src\/entities\/user.entity.ts<\/code>:<\/p><pre><code>import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';\n\n@Entity()\nexport class User {\n  @PrimaryGeneratedColumn()\n  id: number;\n\n  @Column()\n  name: string;\n\n  @Column()\n  email: string;\n}<\/code><\/pre><p>Crea un servicio y un controlador para manejar usuarios:<\/p><pre><code>nest generate service users\nnest generate controller users<\/code><\/pre><p>Configura <code>users.service.ts<\/code> para interactuar con TypeORM:<\/p><pre><code>import { Injectable } from '@nestjs\/common';\nimport { InjectRepository } from '@nestjs\/typeorm';\nimport { Repository } from 'typeorm';\nimport { User } from '..\/entities\/user.entity';\n\n@Injectable()\nexport class UsersService {\n  constructor(\n    @InjectRepository(User)\n    private usersRepository: Repository&lt;User&gt;,\n  ) {}\n\n  findAll(): Promise&lt;User[]&gt; {\n    return this.usersRepository.find();\n  }\n}<\/code><\/pre><h2>5. Configuraci\u00f3n de rutas y prueba de la API<\/h2><p>Define las rutas en <code>users.controller.ts<\/code>:<\/p><pre><code>import { Controller, Get } from '@nestjs\/common';\nimport { UsersService } from '.\/users.service';\nimport { User } from '..\/entities\/user.entity';\n\n@Controller('users')\nexport class UsersController {\n  constructor(private readonly usersService: UsersService) {}\n\n  @Get()\n  findAll(): Promise&lt;User[]&gt; {\n    return this.usersService.findAll();\n  }\n}<\/code><\/pre><p>Ejecuta la aplicaci\u00f3n y prueba la API en <code>http:\/\/localhost:3000\/users<\/code>.<\/p><h2>6. Comparaci\u00f3n con otras tecnolog\u00edas<\/h2><table><tbody><tr><th>Tecnolog\u00eda<\/th><th>Benefits<\/th><th>Dificultad<\/th><\/tr><tr><td>NestJS + TypeORM<\/td><td>Escalabilidad y modularidad<\/td><td>Media<\/td><\/tr><tr><td>Express + Sequelize<\/td><td>Simplicidad y facilidad de uso<\/td><td>Baja<\/td><\/tr><tr><td>Django + PostgreSQL<\/td><td>Potente ORM y alto rendimiento<\/td><td>Alta<\/td><\/tr><\/tbody><\/table><h2>Conclusi\u00f3n<\/h2>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Las APIs REST son fundamentales en el desarrollo de aplicaciones modernas, permitiendo la comunicaci\u00f3n entre clientes y servidores. NestJS, un framework basado en Node.js y TypeScript, es una excelente opci\u00f3n para crear APIs escalables y eficientes. En este art\u00edculo, aprender\u00e1s c\u00f3mo desarrollar una API REST con NestJS y PostgreSQL paso a paso. 1. Instalaci\u00f3n de [&hellip;]<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""}},"_joinchat":[],"footnotes":""},"categories":[1],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/wenuwebs.com\/en\/wp-json\/wp\/v2\/posts\/12883"}],"collection":[{"href":"https:\/\/wenuwebs.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wenuwebs.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wenuwebs.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wenuwebs.com\/en\/wp-json\/wp\/v2\/comments?post=12883"}],"version-history":[{"count":4,"href":"https:\/\/wenuwebs.com\/en\/wp-json\/wp\/v2\/posts\/12883\/revisions"}],"predecessor-version":[{"id":12887,"href":"https:\/\/wenuwebs.com\/en\/wp-json\/wp\/v2\/posts\/12883\/revisions\/12887"}],"wp:attachment":[{"href":"https:\/\/wenuwebs.com\/en\/wp-json\/wp\/v2\/media?parent=12883"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wenuwebs.com\/en\/wp-json\/wp\/v2\/categories?post=12883"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wenuwebs.com\/en\/wp-json\/wp\/v2\/tags?post=12883"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}