3 pontos por musoftware 2021-10-02 | 1 comentários | Compartilhar no WhatsApp

Olá! Atualmente sou um estudante de graduação me preparando para meu projeto de conclusão de curso (e para conseguir um emprego...).

Enquanto escrevia um servidor REST API com Flask, pensei que seria ótimo ter um template que incluísse recursos comuns usados em vários projetos, então criei um projeto relacionado a isso.

Os recursos atuais são os seguintes.

Cadastro, login e autenticação com JWT (autenticação com tokens Refresh e Access)

......- Autenticação do Flask-Admin (emissão automática e autenticação de cookie com token de Admin)

......- Invalidação manual de token (invalidar o token de um usuário específico que fez login)

......- Verificação de endereço de e-mail e redefinição de senha usando e-mail (token de e-mail)

Uso de recursos por meio de docstrings e decorators do Python

......- Definição de rotas com login obrigatório e login recomendado

......- Definição e restrição de parâmetros de requisição (gerenciamento de campos Required/Optional)

............- Validação de entrada em Header/Body/Query

......- Documentação da descrição da rota / parâmetros de requisição / respostas possíveis para a rota

Exportação de documentação

......- Exportação para documento YAML OpenAPI 3.0

......- Recurso de geração de diagrama ER (saída .dot)

Entre esses recursos, a parte de login (autenticação JWT) e a geração de documentação OpenAPI 3 foram implementadas diretamente usando PyJWT e apispec.

Quanto à geração de documentação OpenAPI 3, Flask-RESTful e Flask-RESTplus estão sem manutenção, e o Flask-RESTX não tinha o modo de uso que eu queria.

Além disso, na parte de login e autenticação, o Flask-Login é baseado em sessão e eu nem sabia que o Flask-JWT-Extended existia (...), então acabei implementando por conta própria.

Como sou apenas um estudante de graduação e fiz isso às pressas, os comentários são escassos e o código não está muito limpo, mas ficaria grato se vocês vissem isso como uma PoC de como uma API pode ser definida dessa forma!

(Na verdade, eu tinha postado isso há pouco tempo, mas todos os espaços de indentação da parte de recursos desapareceram (...), então apaguei e postei de novo. Agradeço a compreensão!)

1 comentários

 
xguru 2021-10-03

E você ainda é graduando, que legal. Estou torcendo por você!!