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
- Escrever a classe Entity, que reflita a entidade desejada (o formato deve ser plenamento correspondete À estrutura de banco desejada). Exemplo.
- Escrever a classe DTO, que reflita o formato desejado do JSON de entrada e saída (podem haver diferentes formatos em diferentes rotas). Exemplo.
- 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)
- Variáveis de ambiente
- Colaborando com o projeto
- Principais Recursos
- DTO
- Fields (descritores de propriedades)
- DTOField
- DTOListField (TODO)
- DTOSQLJoinField
- DTOLeftJoinField (TODO)
- Filters (filtros nos campos)
- Filtros no DTO
- fixed_filters (TODO)
- filter_aliases
- Suporte a conjuntos (do ERP SQL) (TODO)
- Fields (descritores de propriedades)
- Entity (TODO Atualizar)
- Controller
- Menos usados
- DTO
- Outros Recursos
- Utilitário para Healthcheck
- Integeração com o MultiDatabaseLib (TODO)
- Validação de DTOs isolados (campos, tipos de dadose, etc) (TODO)
- Uso manual do DAO (para queries manuais) (TODO)
- Uso manual do Service (para consultas ou inserts manuais) (TODO)
- Customizando comportamentos (TODO)
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
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9594863d99116847c30b1e283b34d996807a2adb72ec394d8bd6ceaf04d73b29 |
|
MD5 | 1862492b2b65815cf386d94551cfab61 |
|
BLAKE2b-256 | a4b4053514d83057f80363370efbc02e65cd5b7ea47773f7db70546de48bf315 |
File details
Details for the file nsj_rest_lib-2.11.1-py3-none-any.whl
.
File metadata
- Download URL: nsj_rest_lib-2.11.1-py3-none-any.whl
- Upload date:
- Size: 67.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 887edf1f14da384550034e8b2777a3a717c7bc41a7eee9c05e585abf09bd5453 |
|
MD5 | 3793b3c94b09027375b55c4373c60961 |
|
BLAKE2b-256 | e96af04cfc86eb2321a7f7b7f22f1771d39bab4b6e83cbdec15d3f434a361020 |