Rest Api
Rest Api
Análises de códigos
Exercícios automáticos
E muito mais
Para quem participou da 4D4P terá um desconto especial, confira no link abaixo:
https://youtu.be/d_p7jAPDD8E
Passos iniciais
Primeiro devemos criar o ambiente virtual:
# Criar
# Linux
python3 -m venv venv
# Windows
python -m venv venv
#Ativar
# Linux
source venv/bin/activate
# Windows
venv\Scripts\Activate
# Caso algum comando retorne um erro de permissão execute o código e tente novamente:
Ative o auto-save
INSTALE O APP!
Crie uma URL para API:
path('api/', api.urls)
api = NinjaAPI()
api.add_router('livros/', livros_router)
Livros
Crie as tabelas:
REST API 1
class Categorias(models.Model):
nome = models.CharField(max_length=50)
def __str__(self):
return self.nome
class Livros(models.Model):
streaming_choices = (('N', 'Netflix'), ('A', 'Amazon Prime'))
nome = models.CharField(max_length=50)
streaming = models.CharField(max_length=2, choices=streaming_choices)
nota = models.IntegerField(null=True, blank=True)
comentarios = models.TextField(null=True, blank=True)
categorias = models.ManyToManyField(Categorias)
def __str__(self):
return self.nome
Execute as migrações!!
class LivroSchema(ModelSchema):
class Meta:
model = Livros
fields = ['nome', 'streaming', 'categorias']
livros_router = Router()
livro.save()
return livro
@livros_router.put('/{livro_id}')
def avaliar_livro(request, livro_id: int, avaliacao_schema: AvaliacaoSchema):
comentarios = avaliacao_schema.dict()['comentarios']
nota = avaliacao_schema.dict()['nota']
livro = Livros.objects.get(id=livro_id)
livro.comentarios = comentarios
livro.nota = nota
livro.save()
return {'status': 'Avaliação realizada com sucesso'}
class AvaliacaoSchema(ModelSchema):
class Meta:
model = Livros
fields = ['nota', 'comentarios']
@livros_router.delete('/{livro_id}')
def deletar_livro(request, livro_id: int):
livro = Livros.objects.get(id=livro_id)
livro.delete()
return livro_id
REST API 2
categoria = filtros.dict()['categorias']
reassistir = filtros.dict()['reassistir']
livros = Livros.objects.all()
if not reassistir:
livros = livros.filter(nota=None)
if nota_minima:
livros = livros.filter(nota__gte=nota_minima)
if categoria:
livros = livros.filter(categorias__id=categoria)
livro = livros.order_by('?').first()
if livros.count() > 0:
return 200, livro
else:
return 404, {'status': 'Livro não encontrado'}
class FiltrosSortear(Schema):
nota_minima: int = None
categorias: int = None
reassistir: bool = False
REST API 3