dev-resources.site
for different kinds of informations.
Apredendo construção de apis com node e TypeScript
Published at
11/2/2024
Categories
api
programmer
typescript
webdeveloper
Author
michaelmoranis
Author
14 person written this
michaelmoranis
open
Configuração de typescript com node js para rodar o servidor ou mostrar algo na tela.
Passo 1. Para inicializar o projeto e instalar dependencias.
npm init -y
para criar um arquivo package.json.
- instalação do typescript e os tipos para node js.
npm install typescript @types/node --save-dev
Passo 2. Criar arquivo de configuração tsconfig.json
1. Esse arquivo vai servir para configurações principais do do node js.
rode o comando:
npx tsc --init
3. configurações principais do node js com ts no arquivo tsconfig.json .
{
"compilerOptions": {
"target": "es2016",
"skipLibCheck": true,
"module": "CommonJS",
"outDir": "./dist",
"strict": false,
"esModuleInterop": false,
},
"include": ["src"],
"exclude": ["node_modules"]
}
4. configuração de scripts para compilação e execução no package.json.
"scripts": {
"build": "tsc",
"start": "node dist/index.js",
"dev": "ts-node-dev --respawn --transpile-only src/index.ts"
}
Usar ts-node-dev para rodar codigo em desenvolvimento recompilando automaticamente ao detectar alterações.
Instalação do ts-node-dev.
npm install ts-node-dev --save-dev
Pequeno exemplo de um servidor apenas usando node js sem libs externas.
import { createServer } from 'node:http'
const server = createServer((request, response) => {
console.log("hello")
response.write('michael esta no servidor')
return response.end()
})
server.listen(3333)
Utilização de frameworks para desenvolvimento de Apis em especial o uso do Fastify
Instalação do Fastify no projeto.
- Rode o comando:
npm install fastify
- O uso do Fastify vai facilitar o desenvolvimento da api porque simplifica a escrita do codigo e facilita o redirecionamento das rotas no projeto.
Exemplo em urls
Urls com metodo post, delete, get e put as mais usadas.
// POST localhost:3333/videos
// DELETE localhost:3333/videos/1 no caso de ter um id especifico para itens usa-se o especificador dele
Exemplo de uso do fastify para criação de rotas ou endpoints
import { fastify } from 'fastify'
const server = fastify()
server.get('/', () => {
return "hello"
})
server.listen({
port: 3333
})
Principais operações feitas usando apis é o famoso CRUD (create, read, update, delete)
No crud refletido no codigo será o uso dos metodos http POST PUT DELETE GET
Para fins de estudos vou utilizar primeiramente um banco de dados em memória, usando uma estrutura de dados.
- Crio um novo arquivo chamado database-memory.ts e crio minha classe que será meu banco de dados em memória.
import { randomUUID } from "node:crypto"
export class DataBaseMemory {
#videos = new Map()
list() {
return this.#videos.values()
}
create(video) {
const videoId = randomUUID()
this.#videos.set(videoId, video)
}
update(id, video) {
this.#videos.set(id, video)
}
delete(id) {
this.#videos.delete(id)
}
}
- Na utilização do metodo post para enviar dados para ser armazenado ou modificado com metodos do tipo PUT deve enviar dados no corpo da requisição por meio do uso de request.body veja exemplo:
import { fastify } from 'fastify'
import { DataBaseMemory } from '../database/databaseMemory'
const server = fastify()
const database = new DataBaseMemory()
server.post('/persona', (request, reply) => {
const {title, description, age } = request.body
database.create({
title,
description,
age
})
console.log(database.list())
return reply.status(201).send()
})
API completa com todas as rotas configuradas e funcionando no banco de dados em memória.
import { fastify } from 'fastify'
import { DataBaseMemory } from '../database/databaseMemory'
const server = fastify()
const database = new DataBaseMemory()
server.post('/persona', (request, reply) => {
const {title, description, age } = request.body
database.create({
title,
description,
age
})
console.log(database.list())
return reply.status(201).send()
})
server.get('/persona', () => {
const persona = database.list()
console.log(persona)
return persona
})
server.put('/persona/:id', (request, reply) => {
const {title, description, age } = request.body
const personaId = request.params.id
database.update(personaId, {
title,
description,
age
})
return reply.status(204).send()
})
server.delete('/persona/:id', (request, reply) => {
const personaId = request.params.id
database.delete(personaId)
return reply.status(200).send()
})
server.listen({
port: 3333
})
programmer Article's
30 articles in total
11 Essential Non-Coding Skills Every Developer Needs to Master
read article
Apredendo construção de apis com node e TypeScript
currently reading
Descarga: The Pragmatic Programmer: your journey to mastery
read article
A Comprehensive Guide to Becoming a Great Tech Lead
read article
The Best 5 Free IP Geolocation APIs for Programmers
read article
Day 27: Unveiling the Magic of Binary Search in Java, C++, Python 🚀ther
read article
Java Programmer Mastery for Developers
read article
Crashing Code: The Hidden Dangers of Programmer Burnout and How to Avoid Them
read article
Odd Even Number Checker using JavaScript (https://youtu.be/4YhYZooNohE)
read article
Advice for Newbies: From a Self-Taught Programmer
read article
Listado de páginas para programador y diseñador freelance que están buscando trabajo 🥳
read article
Challenges of Micro SaaS
read article
5 Websites To Finish 💯 Complicated Stuff Quickly & Easily! 🚀
read article
Maximizing Your Productivity as a Software Engineer: Tips and Tricks
read article
10 things that I wish I had known earlier!!
read article
Facts no one knows about programmers
read article
The Courage to Quit: Making the Leap From Corporate Programmer to Micro SaaS Founder
read article
Top 10 most common Programming And Coding Mistakes Data Scientists Make
read article
Using Windows PowerShell
read article
📚3 Must Read Books for Programmers from Non-traditional Background
read article
Memes only programmer can understand
read article
Happy Programmers' Day
read article
Developer career achievements?
read article
Programmer's life
read article
Do you drink and code?
read article
5 Proven ways to Solve any Coding Problems Like an Expert in 2022
read article
The 3 debugging tools that every programmer needs.
read article
Roles of a Software Engineer
read article
How to Add Push Notifications to a Flutter App
read article
Tips To be a Better Programmer
read article
Featured ones: