synapseapi
TypeScript icon, indicating that this package has built-in type declarations

1.5.32 • Public • Published

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

App Screenshot

  • 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

Pasta models

Pasta controllers

Readme

Keywords

none

Package Sidebar

Install

npm i synapseapi

Weekly Downloads

57

Version

1.5.32

License

none

Unpacked Size

299 kB

Total Files

49

Last publish

Collaborators

  • alvozeroum