≡ Menu

Getting Started with NestJS: A Beginner’s Tutorial

Welcome to the world of NestJS!

If you’re looking to build efficient, scalable, and maintainable server-side applications, you’ve come to the right place.

NestJS is a progressive Node.js framework heavily inspired by Angular, providing an out-of-the-box architecture for enterprise-grade backends.

In this tutorial, we’ll walk through the basics of setting up a NestJS project and creating your first API endpoint.

Why Choose NestJS?

  • TypeScript by Default: Brings static typing and improved code quality.

  • Modular Architecture: Keeps your application organized as it grows.

  • Powerful CLI: Speeds up development by generating boilerplate code.

  • Scalability: Designed specifically for large-scale applications.


Prerequisites

Make sure you have the following installed:

  1. Node.js (LTS version recommended)

  2. npm (comes with Node)


Step 1: Install the NestJS CLI

The CLI allows you to generate modules, controllers, and services with simple commands. Open your terminal and run:

npm i -g @nestjs/cli

Step 2: Create a New Project

Navigate to your desired folder and run:

nest new my-nest-app

Select npm as your package manager. Once finished, move into the project:

cd my-nest-app

Step 3: Run the Application

To start the development server with “watch mode” (which restarts whenever you save a file), run:

npm run start:dev

Your app is now running at http://localhost:3000. You should see “Hello World!” in your browser.


Step 4: Building a “To-Do” API

Let’s build a functional API. We will generate a Module, a Controller (to handle requests), and a Service (to handle logic).

1. Generate the Files

Run these commands in your terminal:

nest g module todos
nest g controller todos
nest g service todos

2. Implement the Service

Open src/todos/todos.service.ts and replace the code with this logic to manage a simple array:

import { Injectable } from '@nestjs/common';

interface Todo {
  id: number;
  title: string;
  completed: boolean;
}

@Injectable()
export class TodosService {
  private todos: Todo[] = [];
  private nextId = 1;

  findAll(): Todo[] {
    return this.todos;
  }

  create(title: string): Todo {
    const newTodo = { id: this.nextId++, title, completed: false };
    this.todos.push(newTodo);
    return newTodo;
  }

  findOne(id: number): Todo {
    return this.todos.find(todo => todo.id === id);
  }
}

3. Implement the Controller

Open src/todos/todos.controller.ts and update it to handle HTTP requests:

import { Controller, Get, Post, Body, Param } from '@nestjs/common';
import { TodosService } from './todos.service';

@Controller('todos')
export class TodosController {
  constructor(private readonly todosService: TodosService) {}

  @Get()
  getAll() {
    return this.todosService.findAll();
  }

  @Post()
  create(@Body('title') title: string) {
    return this.todosService.create(title);
  }

  @Get(':id')
  getOne(@Param('id') id: string) {
    return this.todosService.findOne(+id);
  }
}

Step 5: Test Your API

You can use a tool like Postman or Insomnia to test your new endpoints:

  1. POST http://localhost:3000/todos with a JSON body: {"title": "Learn NestJS"}.

  2. GET http://localhost:3000/todos to see your list.

Conclusion

You’ve just built a working REST API with NestJS!

From here, you can explore database integration with TypeORM, add Validation Pipes, or implement JWT Authentication.

Useful links below:

Let me & my team build you a money making website/blog for your business https://bit.ly/tnrwebsite_service

Get Bluehost hosting for as little as $1.99/month (save 75%)…https://bit.ly/3C1fZd2

Best email marketing automation solution on the market! http://www.aweber.com/?373860

Build high converting sales funnels with a few simple clicks of your mouse! https://bit.ly/484YV29

Join my Patreon for one-on-one coaching and help with your coding…https://www.patreon.com/c/TyronneRatcliff

Buy me a coffee ☕️https://buymeacoffee.com/tyronneratcliff

{ 0 comments… add one }

Leave a Comment