🔥 Estrutura base de webservices em Node.js
-
- no local de sua preferência, cria um diretório para o projeto (exemplo: /home/usuario/projects/projeto_nodejs)
-
- clone o repositório do projeto na sua máquina no diretório do projeto criado anteriormente
-
- faça a instalação do driver db2 conforme as instruções em MM Node DB2 Helper
-
- crie algumas variáveis de ambiente no seu arquivo ".bash_profile" (geralmente localizado em $HOME ou /Users/{SeuUsuario}), é só escrever esses exports no arquivo e salvar.
IBM_DB_HOME
apontando para o local onde você baixou o driver db2, exemplo:
export IBM_DB_HOME={DIRETORIO DO DRIVER DB2}/ibm/clidriver
LD_LIBRARY_PATH
para o local onde você baixou o driver db2, seguido do diretóriolib
, exemplo:
export LD_LIBRARY_PATH=$IBM_DB_HOME/lib
SHARED_CONNS_DEV
export SHARED_CONNS_DEV={DIRETORIO DO SHARED QUE GUARDA AS CONEXOES - NA SUA MAQUINA}/shared
SHARED_CONNS_PROD
export SHARED_CONNS_PROD={DIRETORIO DO SHARED NO SERVIDOR DE PRODUCAO}/shared
💬 Depois execute, para atualizar a linha de comando
. $! //ou Precisa ser exatamente o proximo comando executado na linha de comando source .bash_profile //ou . .bash_profile
-
- na raiz do projeto, execute:
$ npm install ou $ yarn
-
- baixe o repositório do path shared que está em https://github.com/maucrvlh/mm-generic-shared-itens.git com o nome
shared
no diretório do PROJETO, e não da API. Exemplo:
$ cd /home/usuario/projects/projeto_nodejs $ git clone https://github.com/maucrvlh/scaffolding/mm-generic-shared-itens shared
- baixe o repositório do path shared que está em https://github.com/maucrvlh/mm-generic-shared-itens.git com o nome
-
- baixe o repositório de itens de suporte de APIs que está em https://github.com/maucrvlh/SupportServices.git. Preferencialmente fora do projeto, com o nome
support
ou outro de sua preferência. Exemplo:
$ cd /home/usuario/projects/ $ git clone https://github.com/maucrvlh/SupportServices.git support
- baixe o repositório de itens de suporte de APIs que está em https://github.com/maucrvlh/SupportServices.git. Preferencialmente fora do projeto, com o nome
-
- dentro do projeto, dentro da API, no arquivo
src/config/settings.ts
, ajuste as linhas 119, 120, 131 e 134 apontando para o diretório correto configurado no item anterior.
- dentro do projeto, dentro da API, no arquivo
-
- após o término das instalações dos pacotes, rode o projeto:
$ npm run start ou $ yarn start
- Os endpoints implementados nesta versão inicial são:
-
http://localhost:3001/api/v1/processos/details/0613608
Dados vindos do SQLite que está no repositório shared do projeto
-
http://localhost:3001/api/v1/processos/saj/06001489620178040092
Consulta diretamente do banco do SAJ
-
http://localhost:3001/api/v1/processos/projudi/100000001666806
Consulta diretamente do banco do Projudi
· Projeto
· api_1
· api_2
· shared
Estrutura básica de diretórios da api api_1
(modelo, apenas; pode-se usar outras estruturas livremente)
· api_1
· dist
· node_modules
· src
· app
· controllers
─ all.ts
─ controller1.ts
─ controller2.ts
─ controllerN.ts
· dao
─ all.ts
─ queries.ts
─ sqlite.ts (se for usado no projeto um db sqlite)
· routes
─ all.ts
─ endpoints1.ts
─ endpoints2.ts
─ endpointsN.ts
· config
─ constants.ts
─ express.ts
─ settings.ts
─ index.ts
· test
─ LICENSE
─ README.md
─ package.json
─ tsconfig.json
─ nodemon.json
... versionamento interno de endpoints e suas dependencias através de namespace ou classes. Aqui usei namespace. ... typescript como 'linguagem' padrão, facilitando a inclusão de devs que venham do paradigma OO ... responsabilidades das APIs ... segurança no consumo das APIs e identificação dos clientes (incluir proposta do TOTP) ... interação entre as APIs e das APIs com seus consumidores ... itens de configuração que mudam de acordo com o ambiente
... descrever a estrutura do projeto, das APIs do projeto, dos paths e arquivos internos ... explicar quais são permanentes, quais são especÃficos da API
... propor um padrão de readme para os projetos
... explicar aqui como é feito o login de usuários via cliente -> API, os parâmetros que o cliente deve passar login, username ou credentials
... explicar que aqui os controllers podem ser únicos, ou podem ser dividos por função, ou mesmo pode sem empactados por um path com o nome da entidade (ex.: processos/add.ts; processos/del.ts; etc)
... breve explicação sobre o processo de build e o conteúdo do transpile
... breve explicação desse process manager p/ nodejs e um exemplo de deploy
... lista de pendências.