Come creare la tua prima applicazione NestJS

Photo by Sereja Ris on Unsplash

Che cos’è NestJS?

Quando utilizzare NestJS?

Perché usare NestJS?

  • Type checking: con il Typescript sfruttiamo tutta la potenza del javascript senza incorrere nei problemi di tipizzazione.
  • Modulare: tramite la suddivisione in moduli possiamo isolare i nostri componenti in base al domain boundary.
  • Dependency Injection: grazie al container DI siamo in grado di scrivere codice disaccoppiato e testabile.
  • Adapters: Nest integra al suo interno tutte le librerie javascript/typescript più utilizzate e testate dalla community e fornisce agli sviluppatori tutti gli strumenti necessari per poter contribuire alla raccolta.
  • Angular Like: la struttura familiare ci permette di passare facilmente da frontend a backend senza dover cambiare l’approccio di sviluppo ad ogni iterazione.
  • CLI: possiamo sviluppare le nostre funzionalità senza doverci preoccupare del boilerplate iniziale

Cominciamo a scrivere codice

  • recuperare la lista di tutti i todo
  • recuperare un todo singolo
  • inserire un todo
  • modificare un todo
  • eliminare un todo
  • [GET] todos
  • [GET] todos/{id}
  • [POST] todos
  • [PUT] todos/{id}
  • [DELETE] todos/{id}
Ehm 😅

step 0: Setup

npm i -g @nestjs/cli
nest new TodoBackend
NestJS bootstrap logs

step 1: Module

  • Non è un caso tipico e di conseguenza difficilmente applicabile in un contesto reale.
  • Non saremmo disaccoppiati, perdendo quindi in manutenibilità e in portabilità del nostro codice.
nest generate module todo

step 2: Entity

nest generate class todo/entities/Todo --no-spec

step 3: Repository

npm i @nestjs/typeorm typeorm sqlite3

step 4: DTO

step 5: Service

nest generate service todo/services/todo
nest generate service todo/services/TodoMapper

step 6: Controller

nest generate controller todo/controllers/todo
@Post()
@UseInterceptors(ClassSerializerInterceptor)
public add(@Body() todo: AddTodoDto): Promise<TodoDto> {

step 7: Validation

npm i class-transformer class-validator

step 8: Run!

npm run start
npm run start:debug

step 9: Enable CORS

step 10: Test

Conclusioni

--

--

--

Fullstack Developer | Based in Florence | https://github.com/KernelPanic92 | https://iacopociao.com

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Iacopo Ciao

Iacopo Ciao

Fullstack Developer | Based in Florence | https://github.com/KernelPanic92 | https://iacopociao.com

More from Medium

Nx NestJs — How to autogenerate OpenApi/Swagger specs

Explanation Utility Types in TypeScript

Forcing string patterns in Typescript

How to create conditional validations in class-validator