Skip to content

Latest commit

History

31 Commits

Folders and files

NameName
Last commit message
Last commit date

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âmetroTipoDescrição
idintObrigató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": "fulaninho@gmail.com",
"telefone": "7998232337",
"resumo": "olá, meu nome é fulaninho"
}
ParâmetroTipoDescrição
tipos_sanguineo_idintObrigatório. O ID do tipo sanguineo (na tabela de tipo sanguineo)
signo_idintObrigatório. O ID do signo (na tabela de signos)
cpfStringObrigatório. CPF para o perfil
nomeStringObrigatório. Nome para o perfil
data_nascimentodatetimeObrigatório. Data de nascimento usuario
emailStringObrigatório. Email para o perfil
telefoneStringObrigatório. Telefone para o perfil
resumoStringObrigatório. Um breve resumo para o perfil

Atualiza um perfil existente

PUT /perfis/{id}
ParâmetroTipoDescrição
idintObrigató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": "kevennykeke@gmail.com",
"telefone": "7998836127",
"resumo": "olá, meu nome é kevenny"
}
ParâmetroTipoDescrição
tipos_sanguineo_idintObrigatório. Novo ID do tipo sanguineo (na tabela de tipo sanguineo)
signo_idintObrigatório. Novo ID do signo (na tabela de signos)
cpfStringObrigatório. Novo CPF para o perfil
nomeStringObrigatório. Novo nome para o perfil
data_nascimentodatetimeObrigatório. Nova Data de nascimento usuario
emailStringObrigatório. Novo Email para o perfil
telefoneStringObrigatório. Novo Telefone para o perfil
resumoStringObrigatório. Novo resumo para o perfil
DELETE /perfis/{id}
ParâmetroTipoDescrição
idintObrigató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âmetroTipoDescrição
competencia_idintObrigatório. O ID da competencia (na tabela de competencias)
perfil_idintObrigató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âmetroTipoDescrição
instituicao_idintObrigatório. O ID da instituição (na tabela de instituicoes)
perfil_idintObrigatório. O ID do perfil (na tabela de perfis)
nomeStringObrigató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âmetroTipoDescrição
perfil_idintObrigatório. O ID do perfil (na tabela de perfis)
empresaStringObrigatório. Nome da Empresa
iniciodatetimeObrigatório. Data de inicio
fimdatetimeObrigatório. Data de fim
atual_trabalhointObrigatório. valor de verificação de trabalhando atualmente
cargoStringObrigató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

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages