Construindo Encurtador de URL
Bootcamp "Eduzz Fullstack Developer #2" - Digital Innovation One
Projeto desenvolvido com instruções de Alexia Pereira na trilha de estudo do Bootcamp "Eduzz Fullstack Developer #2" da dio.me.
Link da base utilizada neste projeto: alexiadorneles/url-shortener-dio.
Rodando o projeto
npm install
npm run dev
//para rodar versão de desenvolvimentonpm run build
// para rodar build e versão de produção
Para configurar seu banco de dados MongoDB, basta atualizar a variável de ambiente MONGO_STRING_CONN
que está no arquivo .env
com sua string connection. A string normalmente é fornecida pelo provedor de serviço do banco de dados.
Abaixo seguem modificações feitas em relação ao projeto base:
- Criado o método
list
para listar todas as URLs já encurtadas pela aplicação, utilizando o endpointGET /
; - Criado arquivo
.env
com variávelMONGO_STRING_CONN
para guardar a string de conexão ao banco, a URL e a porta que a aplicação utilizará; - Criado o arquivo
.env.example
como exemplo (template) do arquivo.env
visto que este não ficará disponível no repositório remoto (GitHub); - Foi criada condição no arquivo
Constants.ts
do pacoteconfig
para evitar salvar porta quando não estiver em local host, no Heroku, mesmo setando a variável PORT, o mesmo gerava valores aleatórios; - No métido
list
doURLController
, foi criado um forEach para que o atributoshortURL
esteja alinhado com o servidor (localhost, Heroku etc).
Endpoints da API:
- Encurtar URL:
POST /shorten
, com o JSON:
{
"originURL": "https://exampleurl.com"
}
- Listar todas as URLs já encurtadas:
GET /
- Recuperar/Redirecionar para URL original:
GET /{hash}
Heroku: url-shortener-didi.herokuapp.com
Projeto hospedago noPara hospedar o projeto no Heroku tive que realizar os seguintes passos:
- 1- No arquivo
package.json
foi adicionado o atributostart
dentro descripts
:
"start": "node dist/index.js"
- 2- Foi adicionado um novo item, o
engine
também nopackage.json
, contendo as versões no npm e node:
"engines": {
"npm": "8.3.0",
"node": "14.18.0"
},
- 3- Foram adicionadas as variáveis de ambiente no Heroku, sendo elas:
KEY | VALUE |
---|---|
NODE_MODULES_CACHE | false |
USE_NPM_INSTALL | true |
Observações:
- Não esquecer de criar as variáveis de ambiente do arquivo
.env
que utilizou no projeto local nas configurações do Heroku; - Caso tenha atualizado as versões do npm ou node no projeto local, então deve-se alterar as versões mencionadas no passo 2. Para confirmar a versão, basta rodar os comandos
npm -v
enode -v
na pasta do projeto.
Fonte: When NPM miss with Heroku, How To Solve (npm ERR! Failed at the start script).
Links Interessantes: