Skip to main content

Biblioteca para construção de APIs Rest Python, de acordo com o guidelines interno, e com paradigma declarativo.

Project description

RestLib (nsj_rest_lib)

Ver Histórico de Versões da biblioteca.

QuickStart

Biblioteca para construção de APIs Rest Python, de acordo com o guidelines interno, e com paradigma declarativo.

Em resumo, com o RestLib, é possível construir APIs Rest completas para CRUD de entidades (GET, POST, PUT e DELETE), bastando escrever arquivos declarativos de DTO, Entity e das rotas em si, sem implementar a lógica de negócio ou acesso a banco de dados.

No entanto, diferentemente de frameworks web complexos, o RestLib é apenas uma biblioteca que pode ser usada em conjunto, ou até mesmo como coadjuvante, de uma implementação completamente manual, não "dominando" o ciclo de vida das requisições WEB (e sendo dependente do Flask enquanto framework HTTP).

Para que mais uma biblioteca no estilo framework web?

Os padrões de desenvolvimento da Nasajon contam com particularidades que são melhor atendidas por bilbiotecas próprias, sejam elas:

  • APIs Enxutas
    • Retorno exclusivo dos campos de resumo.
    • Suporte ao parâmetro fields.
    • Paginação obrigatória.
    • Recuperação de dados (do banco) somente sob demanda.
  • APIs Multi Tenant
    • Particinamento de dados por tenant (e/ou grupo empresarial)
  • APIs Multi Banco
    • A mesma API pode ser conectar a qualquer BD do ambiente web, de acordo com o tenant recebido.
  • Suporte ao padrão de isolamento de dados do ERP Desktop (Conjuntos)
  • Logs de auditoria e telemetria próprios
  • Integração nativa com o motor de webhooks interno

Assim, para não exigir excesso de trabalho repetitivo na implementação das APIs internas, optou-se pelo desenvolvimento de uma biblioteca auxiliar própria.

A grande diferença, na filosofia de desenvolvimento, é que se prioriza um esforço para que a biblioteca possa ser usada como auxiliar de fluxos implementados na mão, assim como não impeça as customizações desejadas pelo programador (além de deixá-lo livre para misturar com outras soluções e bibliotecas).

Passos básicos para desenvolver um CRUD completo usando o RestLib

  1. Escrever a classe Entity, que reflita a entidade desejada (o formato deve ser plenamento correspondete À estrutura de banco desejada). Exemplo.
  2. Escrever a classe DTO, que reflita o formato desejado do JSON de entrada e saída (podem haver diferentes formatos em diferentes rotas). Exemplo.
  3. Escrever o módulo Controler, que será declarativo das rotas que se desejam expôr (o qual segue, em grande parte, o padrão do Flask). Exemplo.

Para facilitar ainda mais o trabalho, foi criado um utilitário de linha de comando, que, por meio das APIs do ChatGPT, é capaz de escrever as classes de DTO e Entity, a partir do DDL da entidade desejada.

Índice de conteúdos (documentação geral)

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nsj_rest_lib-2.11.1.tar.gz (49.5 kB view details)

Uploaded Source

Built Distribution

nsj_rest_lib-2.11.1-py3-none-any.whl (67.3 kB view details)

Uploaded Python 3

File details

Details for the file nsj_rest_lib-2.11.1.tar.gz.

File metadata

  • Download URL: nsj_rest_lib-2.11.1.tar.gz
  • Upload date:
  • Size: 49.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.4

File hashes

Hashes for nsj_rest_lib-2.11.1.tar.gz
Algorithm Hash digest
SHA256 9594863d99116847c30b1e283b34d996807a2adb72ec394d8bd6ceaf04d73b29
MD5 1862492b2b65815cf386d94551cfab61
BLAKE2b-256 a4b4053514d83057f80363370efbc02e65cd5b7ea47773f7db70546de48bf315

See more details on using hashes here.

File details

Details for the file nsj_rest_lib-2.11.1-py3-none-any.whl.

File metadata

File hashes

Hashes for nsj_rest_lib-2.11.1-py3-none-any.whl
Algorithm Hash digest
SHA256 887edf1f14da384550034e8b2777a3a717c7bc41a7eee9c05e585abf09bd5453
MD5 3793b3c94b09027375b55c4373c60961
BLAKE2b-256 e96af04cfc86eb2321a7f7b7f22f1771d39bab4b6e83cbdec15d3f434a361020

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page