Projeto API

O objetivo principal do projeto é criar e disponibilizar uma API Rest
Consumir os endpoints e realizar operações de CRUD.

#Requisitos

Criar uma API que seja capaz de armazenar dados e realizar operações CRUD

#Este projeto foi feito com:

Como rodar o projeto ?

  • Clone esse reposiório.
  • Crie um virualenv com Python
  • Ative o virtualenv.
  • Instale as depêndencias.
  • Rode as Migrações

Comandos:

git clone
cd api
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python manage.py makemigrations
python manage.py migrate

Criando SuperUser

python manage.py createsuperuser
username : admin
email : admin@api.com
senha : admin
confirmar senha: admin

python manage.py drf_create_token admin

Notas sobre a API

A autenticação desse projeto foi baseada em TokenAuthentication usando um formato de client-server ou seja requisições autenticadas nos endpoints.

Testes Unitários

Para realizar os testes realizados com TestCase

python manage.py test main.tests.UserTest

Endpoints do projeto

http://127.0.0.1:8000/api/alunos/api/alunos - Lista todos os alunos
http://127.0.0.1:8000/api/alunos/create - Cria um aluno
http://127.0.0.1:8000/api/alunos/api/alunos/{ID} - Filtra aluno por ID
http://127.0.0.1:8000/api/alunos/api/alunos/{ID}/update - Atualiza dados do aluno
http://127.0.0.1:8000/api/alunos/api/alunos/{ID}/delete - Deleta aluno(ID)

Limite de Requisições

  • Usuario não autenticado : 5 Rrequisições por minuto
  • Usuario autenticado : 10 Requisições por minuto

Paginação

  • 3 objetos por página

Criando usuario/Consumindo Endpoints

Para gerar um token entre na url http://127.0.0.1:8000/admin
com um usuario do tipo superuser, acesse o APP - Token de Autorização adicione uma chave Token ao seu usuario.

Criando um aluno#

Requisição POST Endpoint: http://127.0.0.1:8000/api/alunos/create

            Header: 'Content-Type' : 'application/json'
            Authorization: 'Token 67f885ffce9364fc3b6d770c95acfcbabc661db0'

{
"nome":"aluno 111",
"is_student": true,
"turma": "Fundamental"
}