All Projects → joaovictornsv → http-node-api

joaovictornsv / http-node-api

Licence: MIT license
O objetivo dessa aplicação era criar uma API sem nenhuma dependência externa, apenas utilizando as bibliotecas nativas do NodeJS. Tudo foi feito utilizando 100% Javascript.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to http-node-api

java-crud-api
No description or website provided.
Stars: ✭ 24 (-45.45%)
Mutual labels:  crud, crud-api
mezon
Mezon is a simple php framework wich will help you to create business applications.
Stars: ✭ 35 (-20.45%)
Mutual labels:  crud, crud-api
spring-boot-data-jpa-mysql
Spring Boot Rest CRUD API example - Spring Data JPA to interact with MySQL/PostgreSQL database.
Stars: ✭ 89 (+102.27%)
Mutual labels:  crud, crud-api
RussianNounsJS
Склонение существительных по падежам. Обычно требуются только форма в именительном падеже, одушевлённость и род.
Stars: ✭ 29 (-34.09%)
Mutual labels:  zero-dependency, no-dependencies
Dancer-Plugin-SimpleCRUD
Quick and effortless CRUD (create/read/update/delete) operations based on database tables
Stars: ✭ 25 (-43.18%)
Mutual labels:  crud, crud-api
logrocket deno api
A functional CRUD-like API with Deno and Postgres
Stars: ✭ 23 (-47.73%)
Mutual labels:  crud, crud-api
aarbac
An Automated Role Based Access Control .NET framework with T-SQL Query Parser which automatically parse select, insert, update, delete queries based on the logged in user role
Stars: ✭ 18 (-59.09%)
Mutual labels:  crud
CRUD.ASPCore.Reactjs.WebAPI.EF
CRUD Operations in ASP.NET Core application using React.js , Web API and Entity Framework core DB first approach with the help of VS 2017.
Stars: ✭ 80 (+81.82%)
Mutual labels:  crud
idlejs
Execute stuff when user is idle or interactive
Stars: ✭ 35 (-20.45%)
Mutual labels:  no-dependencies
SQLiteQueryServer
Bulk query SQLite database over the network
Stars: ✭ 48 (+9.09%)
Mutual labels:  http-server
stirfry
StirFry is a self contained and lightweight web framework for nodejs
Stars: ✭ 24 (-45.45%)
Mutual labels:  http-server
rawhttp
HTTP library to make it easy to deal with raw HTTP.
Stars: ✭ 156 (+254.55%)
Mutual labels:  http-server
brute-md5
Advanced, Light Weight & Extremely Fast MD5 Cracker/Decoder/Decryptor written in Python 3
Stars: ✭ 16 (-63.64%)
Mutual labels:  no-dependencies
web-benchmarks
A set of HTTP server benchmarks for Golang, node.js and Python with proper CPU utilization and database connection pooling.
Stars: ✭ 22 (-50%)
Mutual labels:  http-server
laravel-backpack-crud-extended
This package extends Backpack/CRUD, to add some awesome features!
Stars: ✭ 60 (+36.36%)
Mutual labels:  crud
remult
A CRUD framework for full stack TypeScript
Stars: ✭ 1,488 (+3281.82%)
Mutual labels:  crud
HTTP-Reverse-Shell
An HTTP Reverse Shell in Python
Stars: ✭ 48 (+9.09%)
Mutual labels:  http-server
api
_api is an autogenerated CRUD API built on LowDB and ExpressJS.
Stars: ✭ 73 (+65.91%)
Mutual labels:  crud
varbox
THE Laravel Admin Panel package built by developers, for developers
Stars: ✭ 61 (+38.64%)
Mutual labels:  crud
lara-crud
This package will give an opportunity to get a very flexible admin panel that will satisfy you most of the time.
Stars: ✭ 33 (-25%)
Mutual labels:  crud

API 100% NodeJS

Uma api sem dependências!

Dependencies Language Top License

Conteúdos

➜ Sobre o projeto
➜ O que aprendi
➜ Como usar
➜ Rotas


🔎 Sobre o projeto

Voltar ao topo

O objetivo dessa aplicação era criar uma API sem nenhuma dependência externa, apenas utilizando as bibliotecas nativas do NodeJS. Tudo foi feito utilizando 100% Javascript.


Front-end

O front-end dessa API também foi feito utilizando 100% Javascript, sem arquivos HTML e CSS pré-criados.

Para visualizar o resultado acesse o repositório: joaovictornsv/http-node-api-web


Banco de Dados

Não foi utilizado nenhum banco de dados, os registros são armazenados em um arquivo users.txt. Escolhi trabalhar com txt ao invés de JSON para ter o desafio de ler arquivos usando o Node.


Arquitetura

Tentei utilizar, na medida do possível, o conceito da Clean Architecture, separando os arquivos em Controllers, Services e Repository.


Tratamento de erros

Como o módulo http nativo do Node não nos permite usar o request.body, tive que adaptar minhas rotas e validar os dados passados por elas. Além disso, a estrutura da rota também foi validada, pois diferente de bibliotecas como o ExpressJS, onde passar a string /users/:id em uma função de request já nos permite acessar o parâmetro com facilidade, no Node esse acesso não é permitido. Para isso tive que criar modos de obtê-los.

Para os tratamentos e validações utilizei as famosas RegEx's, as quais aprendi bastante sobre como atuam durante o desenvolvimento desse projeto.


Funcionalidades ✔️

A API possui um sistema de CRUD completo (Create, Read, Update and Delete) e possui as seguintes funcionalidades:

Funções principais:

  • Listagem de usuários ou usuário único
  • Criação de novo usuário
  • Alteração de dados de um usuário
  • Remoção de um usuário

Outras funcionalidades:

  • Validação de dados
  • Validação de rotas
  • Tratamento de erros usando Middlewares
  • Gerador de IDs únicos
  • Uso de Controller, Repository e Services

📚 O que aprendi

Voltar ao topo

Ter que implementar cada etapa da api, desde o tratamento dos dados até o retorno da resposta para o cliente contribuiu bastante para treinar minha lógica de programação, a eficiência em resolver problemas pequenos e também a criar códigos mais legíveis e limpos. Além disso, aprendi a utilizar RegEx's para realizar várias validações no projeto. Por fim, acredito que criar essa API "pura" me fez evoluir mais um degrau nessa jornada de back-end.


ℹ️ Como usar

Voltar ao topo

# Clone this repository
$ git clone https://github.com/joaovictornsv/http-node-api

# Go into the repository
$ cd http-node-api

# Run the server
$ yarn start

↪️ Rotas

Voltar ao topo

Run in Insomnia}

Ver rotas

  • Home page
/
  • Get all users
/users
  • Get a specific user
/users/:id

  • Create a user
users/data?...

Search params:
- name
- email
- age
- city

  • Update a user
users/:id/data?...

Search params:
- name
- email
- age
- city

  • Delete a user
/users/:id

Profile Made with 💙 by João Victor
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].