synapseapi
v1.5.32
Published
Azu lib Typscript
Downloads
88
Readme
SinapseApi
Desenvolver APIs robustas e eficientes em Node.js agora ficou mais simples com a nossa nova framework. Projetada para agilizar e simplificar o processo de construção, nossa framework oferece uma estrutura flexível e intuitiva, permitindo que os desenvolvedores concentrem-se na lógica de negócios em vez de se preocuparem com detalhes técnicos.
Com uma arquitetura modular e extensível, nossa framework proporciona um ambiente altamente adaptável para atender às necessidades específicas de qualquer projeto. Desde a autenticação e autorização até a manipulação de solicitações HTTP e a integração de bancos de dados, cada aspecto do desenvolvimento de API é simplificado e otimizado.
Além disso, nossa framework oferece uma documentação abrangente e exemplos práticos para orientar os desenvolvedores em cada etapa do processo de desenvolvimento. Isso reduz drasticamente o tempo de ramp-up e permite que equipes de desenvolvimento coloquem rapidamente suas ideias em prática.
Em resumo, nossa framework em Node.js não apenas simplifica a construção de APIs, mas também promove a produtividade e a qualidade do código, permitindo que você desenvolva APIs de alto desempenho com facilidade e eficiência.
Instalação
Comandos para Instalação;
npm install sinapseapi-cli -g;
Inicializar Projeto
Para iniciar um novo projeto, crie primeiro uma pasta vazia. Em seguida, abra um terminal ou prompt de comando dentro dessa pasta e execute o seguinte comando:
syapi tsinit
Arquivos e Pastas do Projeto
- startpm2.json;
- O arquivo de configuração do PM2 é essencial para a implantação da API em ambiente de produção. Ele define as configurações necessárias para garantir que a aplicação seja executada de forma estável e eficiente, gerenciando processos, monitorando o desempenho e garantindo a disponibilidade contínua do serviço. Este arquivo é fundamental para a configuração adequada do PM2 e a correta execução da API em um ambiente de produção;
{
"apps": [
{
"name": "<pm2 app name>",
"script": "index.js",
"cron_restart": "0 0 * * *",
"exec_mode": "fork",
"instances": 1,
"namespace": "<pm2 app namespace>"
}
]
}
- index.ts;
- O arquivo de entrada da API é onde a inicialização da mesma ocorre. É aqui que os processos essenciais para o funcionamento da API são iniciados, estabelecendo as bases para sua operação. Este arquivo desempenha um papel fundamental, sendo o ponto de partida para a execução da API;
import { AppApi } from 'synapseapi';
const appApi = new AppApi();
appApi.start();
- app.json/app.prod.json;
- O arquivo de configuração da API é onde estão centralizados todos os dados de conexão e configuração dos serviços integrados à framework. Essencialmente, este arquivo serve como um repositório de informações cruciais para a operação adequada da API, garantindo que as conexões e configurações estejam corretamente estabelecidas para o funcionamento eficiente da aplicação. Quando na frente do nome do aplicativo houver um .prod, significa que o arquivo é de produção, nele contém as mesmas definições do app.json, só que no ambiente de produção. Importante: não subir este arquivo para o repositório git, pois ele contem informações de autenticações gerais e de banco de dados;
Configurações
Pastas
- sql;
- A pasta SQL é responsável por armazenar os arquivos SQL que serão executados diretamente pela engine. Para evitar dependências específicas de um único banco de dados, é recomendado evitar o uso de sintaxe exclusiva. Dentro desta pasta, é possível organizar os SQLs em subpastas para uma melhor estruturação. Todos os arquivos devem ter a extensão .sql e podem ser carregados utilizando o método abaixo:
let sql = await Helper.sql().loadSQL("vendas/vendas-por-periodo");
shared;
A pasta 'shared' contém arquivos de uso geral da API, incluindo aqueles que serão compartilhados por todo o processo. Abaixo, segue a explicação de cada arquivo predefinido nesta pasta;
shared/user_helper.ts;
O arquivo user_helper.ts contém métodos específicos do projeto. Para utilizá-los, utilize o comando abaixo.
// Exemplo da Chamada
await (await Helper.userHelper<UserHelper>(req)).metodoDaApi()
// Codigo do arquivo user_helper.ts
import { ApiRequest } from "synapseapi";
export class UserHelper {
private req?: ApiRequest;
constructor(req?: ApiRequest) {
this.req = req;
}
metodoDaApi(): Promise<void>{
return new Promise(async(resolve, reject)=>{})
}
}
shared/user_session.ts;
Neste arquivo, encontra-se a classe de sessão. Quando a configuração de sessão está ativada, cada endpoint passa por este método UserSession.session. O retorno deste método será enviado para o campo session no retorno do endpoint. O campo id, presente na classe TokenData, é retornado pela framework e contém o Id do usuário capturado do token de acesso. Este parâmetro deve ser fornecido no método de login, que será detalhado mais adiante na documentação.
import { ApiRequest } from "synapseapi";
export class UserSession {
session(req: ApiRequest<TokenData>): Promise<any> {
return new Promise(async (resolve, reject)=>{
try {
resolve({})
} catch(error){
return reject(error)
}
})
}
}
export interface TokenData {
id: string
}
shared/user_settings.ts;
Neste arquivo estão contidas as configurações específicas do projeto, ou seja, aquelas que vão além das configurações do arquivo app..json. Para configurar um parâmetro específico, deve-se acessar os arquivos app.json e app..json e adicionar suas configurações na seção usersettings. Abaixo, segue como acessar seus valores
// Classe UserSetting contida no arquivo user_settings.ts
export interface UserSettings {
meuparametro: string;
}
// Pedaço do arquivo app.json ou app.prod.json
{
...
"usersettings":{
"meuparametro": "valor do parâmetro"
}
}
// Como pegar o valor definido
let valor = ConfigApp.getConfig<UserSettings>().usersettings.meuparametro;
report;
Na pasta report estão armazenados os arquivos de relatório da API. Esses relatórios devem ser criados utilizando o JasperReport. Dentro da pasta template encontra-se o projeto do Jasper, com cada relatório em suas respectivas subpastas. A pasta lib contém a biblioteca Java responsável por compilar o relatório em PDF. Esta biblioteca é baixada automaticamente pela framework se o parâmetro reportlib.init no arquivo de configuração for configurado como true