Skip to content

KevennyJS/python-fastapi-backend

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FastAPI Backend

Projeto desenvolvido para fixar os conhecimentos de desenvolvimento de backend com python usando FAST API

Autor

Funcionalidades

  • Signo
  • Tipo sanguineo
  • Instituicoes
  • Competencias
  • Perfis
  • Competencia
  • Competencia Perfil
  • Experiencia
  • Formação

Deploy

Caso ainda não possua o Python instalado na sua maquina, Clique AQUI para baixar e instalar a ultima versão.

Local:

O primeiro passo para rodar localmente o projeto é instalar as dependencias, para isso, rode:

Depois de instalado, você precisa definir as variaveis de acesso ao banco de dados em "api > app > sql_app > database.py"

Lembrando, se você for rodar em docker, vai precisar conectar seu mysql ao docker, que irá gerar um host especifico para ser usado nas configurações do "DOCKFILE" do caminho acima, AQUI tem um tutorial de como você pode fazer isso, caso tenha duvidas.

  pip install requirements.txt

Agora que o ambiente está com tudo instalado, vá para "{raiz do projeto}/api/" e rode:

    python -m uvicorn app.main:app --reload

pronto! Já pode começar a fazer os requests.

Docker

Com o terminal na raiz do projeto, execute para gerar a build do nosso docker:

  docker build -t cbmse .

após a build completa, é hora de iniciar o docker que acabamos de criar, rode:

  docker run -d --name cbmse_container -p 8000:8000 cbmse

OBS:

1- Link Para o Swagger(O Projeto precisa estar rodando):

http://seu-host:8000/docs

Exemplo: http://127.0.0.1:8000/docs

2- Para facilitar o uso, existe um arquivo "" que pode ser importado no "Postman", nele contem todos os requests organizados e documentados.

3- Em atributos do tipo "datetime", você pode enviar valores em datetime como "2000-06-23T00:00:01.001Z" ou datas no formato "yyyymmdd" como "20200101"

Documentação da API

Retorna todos os perfis

  GET /perfis

Retorna todos os detalhes de um perfil, incluindo experiência, formação e competencias

  GET /perfis/{id}
Parâmetro Tipo Descrição
id int Obrigatório. O ID do perfil que deseja buscar

Cria um novo perfil

  POST /perfis

Body (JSON):

  {
    "tipos_sanguineo_id": 1,
    "signo_id": 1,
    "cpf": "12345678909",
    "nome": "fulaninho junior",
    "data_nascimento": "2000-06-23T00:00:01.001Z",
    "email": "[email protected]",
    "telefone": "7998232337",
    "resumo": "olá, meu nome é fulaninho"
  }
Parâmetro Tipo Descrição
tipos_sanguineo_id int Obrigatório. O ID do tipo sanguineo (na tabela de tipo sanguineo)
signo_id int Obrigatório. O ID do signo (na tabela de signos)
cpf String Obrigatório. CPF para o perfil
nome String Obrigatório. Nome para o perfil
data_nascimento datetime Obrigatório. Data de nascimento usuario
email String Obrigatório. Email para o perfil
telefone String Obrigatório. Telefone para o perfil
resumo String Obrigatório. Um breve resumo para o perfil

Atualiza um perfil existente

  PUT /perfis/{id}
Parâmetro Tipo Descrição
id int Obrigatório. O ID do perfil que deseja Atualizar

Body (JSON):

  {
    "tipos_sanguineo_id": 1,
    "signo_id": 1,
    "cpf": "12345678909",
    "nome": "Kevenny de Jesus Santos",
    "data_nascimento": "2000-06-23T00:00:01.001Z",
    "email": "[email protected]",
    "telefone": "7998836127",
    "resumo": "olá, meu nome é kevenny"
  }
Parâmetro Tipo Descrição
tipos_sanguineo_id int Obrigatório. Novo ID do tipo sanguineo (na tabela de tipo sanguineo)
signo_id int Obrigatório. Novo ID do signo (na tabela de signos)
cpf String Obrigatório. Novo CPF para o perfil
nome String Obrigatório. Novo nome para o perfil
data_nascimento datetime Obrigatório. Nova Data de nascimento usuario
email String Obrigatório. Novo Email para o perfil
telefone String Obrigatório. Novo Telefone para o perfil
resumo String Obrigatório. Novo resumo para o perfil
  DELETE /perfis/{id}
Parâmetro Tipo Descrição
id int Obrigatório. O ID do perfil que deseja deletar

Retorna todos os signos

  GET /signos

Retorna todos os tipos sanguineos

  GET /tipo-sanguineos

Retorna todos as instituições

  GET /instituicoes

Retorna todos as competencias

  GET /competencias

Cria uma competencia perfil

  POST /competencias-perfis

Body (JSON):

  {
      "competencia_id": 1,
      "perfil_id": 1
  }
Parâmetro Tipo Descrição
competencia_id int Obrigatório. O ID da competencia (na tabela de competencias)
perfil_id int Obrigatório. O ID do perfil (na tabela de perfis)

Retorna todos as formações

  GET /formacoes

Cria uma competencia perfil

  POST /formacoes

Body (JSON):

  {
    "instituicao_id": 1,
    "perfil_id": 1,
    "nome": "Formacao 1"
  }
Parâmetro Tipo Descrição
instituicao_id int Obrigatório. O ID da instituição (na tabela de instituicoes)
perfil_id int Obrigatório. O ID do perfil (na tabela de perfis)
nome String Obrigatório. Nome da Formação

Retorna todos as Experiências

  GET /experiencias

Cria uma competencia perfil

  POST /experiencias

Body (JSON):

  {
    "perfil_id": 1,
    "empresa": "Empresa 1",
    "inicio": "20200101",
    "fim": "20200101",
    "atual_trabalho": 1,
    "cargo": "Desenvolvedor Back End"
  }
Parâmetro Tipo Descrição
perfil_id int Obrigatório. O ID do perfil (na tabela de perfis)
empresa String Obrigatório. Nome da Empresa
inicio datetime Obrigatório. Data de inicio
fim datetime Obrigatório. Data de fim
atual_trabalho int Obrigatório. valor de verificação de trabalhando atualmente
cargo String Obrigatório. Cargo Atual

Testes

Para executar testes, primeiramente você vai precisar instalar o PyTest:

    pip install pytest

Pronto, agora você já pode executa-los, rode:

    python -m pytest

About

Python Backend using FastApi

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 98.6%
  • Dockerfile 1.4%