Alura > Cursos de Back-end > Cursos de Python > Conteúdos de Python > Primeiras aulas do curso Django REST Framework: construindo APIs RESTful do Zero

Django REST Framework: construindo APIs RESTful do Zero

Conhecendo o Django REST Framework - Apresentação

Olá! Meu nome é Laís Urano e sou instrutora na Escola de Programação da Alura. Dou a você as boas-vindas a este curso de Django Rest Framework!

Audiodescrição: Laís se autodeclara como uma mulher parda. Tem olhos castanhos e cabelos cabelos cacheados, volumosos, compridos e também castanhos, com algumas mechas azuis na parte de baixo. Tem um piercing no septo e está de camiseta preta. Ao fundo, um dos estúdio da Alura - ambiente com iluminação verde e azul e uma estante com itens de decoração à sua direita.

Este curso é para você que deseja aprender a criar uma API utilizando Python com o Django Rest Framework.

Para isso, é necessário ter conhecimento na linguagem Python e também no Framework Django.

Ao longo das aulas, vamos aprender a desenvolver uma API do zero, desde a criação de modelos, configuração de serializers (serializadores), views, URLs e também a autenticação das nossas rotas.

Faremos tudo isso em um projeto de API de uma escola, em que criaremos os recursos de estudante, cursos e matrículas.

Vamos lá?!

Conhecendo o Django REST Framework - Configurando o projeto

O objetivo do nosso projeto é desenvolver uma API para uma escola. Todas as informações sobre essa API estão no Trello (plataforma de gerenciamento de projetos) do curso. Nele, temos quatro listas: a lista de ferramentas, o backlog com cada recurso que precisamos construir, a lista de itens em desenvolvimento e a de itens finalizados.

Informações iniciais do projeto

Antes de tudo, precisamos entrar no card "API", que está na lista de ferramentas, para conferir as informações gerais da API a ser construída.

No campo de Descrição desse card, temos que essa escola terá três modelos: Estudantes, Cursos e Matrículas. Ou seja, precisamos criar estudantes e cursos e também fazer as matrículas dos estudantes nos cursos.

Também teremos algumas rotas, sendo três delas equivalentes aos modelos — rota de Estudantes, Cursos e Matrículas — e outras duas rotas referentes às Matrículas por Estudante e Matrículas por curso.

Informações Gerais da API:

Além disso, temos a informação técnica da versão do Django REST Framework necessária para construir essa API:

Informações Técnicas:

Se clicarmos na capa desse card, na parte superior dele, temos uma imagem que mostra como deve ser essa API:

Interface da raiz da API exibindo a visualização padrão para DefaultRouter com cabeçalhos de resposta e objetos JSON contendo links para 'estudantes', 'cursos' e 'matrículas'.

Conforme essa imagem, precisamos de uma interface que mostrará as rotas principais, equivalentes aos modelos de Estudantes, Cursos e Matrículas.

Navegando pela documentação do Django Rest Framework

Agora podemos iniciar buscando a versão mais atual do Django REST Framework. Para isso, vamos abrir uma nova guia no navegador, digitar "django rest framework" no campo de busca e pressionar "Enter".

Vamos clicar no primeiro link não patrocinado da página de resultados, o Django REST Framework Org, onde temos a documentação desse framework.

Na lateral esquerda temos um menu de links para navegação nessa documentação. Na parte superior, temos um menu de páginas que contém "Home", a página inicial em que estamos agora, "Tutorial", "API Guide" (guia de API), "Topics" (tópicos) e "Community" (comunidade).

No centro da página inicial, temos uma breve introdução sobre o Django REST Framework: uma ferramenta poderosa e flexível para a construção de APIs web.

Mas, de que precisamos exatamente para começar a construir com o Django REST Framework?

Vamos descer um pouco a página inicial até a seção de Requirements (requisitos), onde temos a informação de que o REST Framework requer uma das seguintes versões do Python e do Django:

Informações de junho de 2024.

Conforme as informações técnicas do nosso projeto, precisamos garantir qual é a versão mais atualizada do Django REST Framework e as versões do Django e Python suportadas por ela.

Para isso, vamos clicar em "Community" no menu superior. Na lista dropdown, conferimos que o último lançamento desse framework é a versão 3.15 (em março de 2024). Clicando em "3.15 Announcement", temos que as últimas versões suportadas são: Django 5.0 e Python 3.12. Então, vamos utilizá-las.

Verificando a versão do Python instalada

Vamos entrar no VSCode na nossa máquina, com a pasta do projeto aberta (pasta "escola"), e abrir o terminal com o atalho "Ctrl + J.

Vamos verificar qual a versão do Python que está instalada, porque queremos garantir que é a versão 3.12. Para isso, rodamos o seguinte comando:

python --version

Para a instrutora, a resposta é de que a versão instalada em sua máquina é a 3.12.2, ou seja, a versão mais atual.

Podemos, então, começar a configurar o ambiente para criar o projeto.

Configurando o ambiente virtual

Primeiramente, criamos um ambiente virtual com Python, rodando o seguinte comando no terminal:

python -m venv venv

Criada a pasta "venv", precisamos ativar esse ambiente virtual. Rodamos o seguinte comando:

venv\Scripts\activate.bat

Caso você esteja utilizando o Linux, o comando para ativar é diferente:

source venv/bin/activate

Com a nossa venv instalada, já podemos começar a instalar as nossas dependências.

Instalando o Django

Primeiramente, queremos saber a versão específica do Django que queremos instalar. Vamos abrir o nosso navegador novamente e buscar por "django download". Vamos clicar no primeiro link da página de resultados, para a própria documentação do Django sobre download.

Descendo um pouco essa página, temos uma tabela com as informações das últimas versões do Django lançadas, sendo a mais recente a versão 5.0.3 (em junho de 2024). Vamos voltar para o VSCode para instalá-la.

No terminal, vamos rodar o seguinte comando para instalar uma versão específica do Django:

pip install Django==5.0.3

Enquanto aguardamos o download, podemos criar o que é necessário para construir um projeto em Django: um projeto e também um aplicativo.

Criando um projeto e um aplicativo

Vamos começar criando o projeto de nome setup, um nome padrão, rodando o seguinte comando no terminal:

django-admin startproject setup .

Em seguida, precisamos criar o nosso aplicativo, que será chamado escola, com o seguinte comando:

python manage.py startapp escola

Agora precisamos conectar o nosso aplicativo com o nosso projeto.

Para isso, podemos fechar o terminal com "Ctrl + J" e abrir o menu Explorer à esquerda do VS Code para acessar a pasta "setup". Nela, vamos abrir o arquivo settings.py e descer até os aplicativos instalados, INSTALLED_APPS, na linha 33.

Ao final desse objeto, antes do fechamento dos colchetes, vamos criar uma linha e abrir e fechar aspas com o nome escola, adicionando uma vírgula ao final pois trata-se de uma tupla.

settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'escola',
]

Também faremos duas configurações nesse arquivo. Na linha 107, onde temos o LANGUAGE_CODE, vamos alterar a língua do aplicaivo de en-us (inglês americano) para pt-br (português brasileiro), entre aspas simples.

Na linha 109, onde temos o TIME_ZONE, vamos definir como America/Sao_Paulo, também entre aspas simples.

LANGUAGE_CODE = 'pt-br'

TIME_ZONE = 'America/Sao_Paulo'

Temos o nosso aplicativo e nosso projeto configurados adequadamente e conectados! Podemos começar a criar a nossa aplicação.

Conhecendo o Django REST Framework - Criando um JSON

Agora que temos nosso aplicativo e projeto configurados, podemos começar a construção da nossa API. Como sabemos, o próprio Django é um framework que oferece inúmeras possibilidades, inclusive a construção de API, então o usaremos para isso!

Criando o JSON com as informações de estudante

No VSCode, vamos abrir a pasta "escola" e acessar as nossas views, no arquivo views.py, pois queremos criar uma API utilizando somente o Django.

A primeira linha desse arquivo importa o render de django.shortcuts, e depois temos um comentário Create your views here. Podemos apagar todo esse código, pois não vamos utilizá-lo.

Em vez disso, vamos importar o JsonResponse do django.http:

views.py

from django.http import JsonResponse

Vamos criar um GET nesse arquivo para que, no momento em que a pessoa acessar a nossa rota, passarmos uma informação para ela.

Para isso, criamos uma função chamada estudantes, recebendo uma request (solicitação) como parâmetro para solicitá-la. Então: def estudantes(request):.

Se essa request for igual a 'GET', ou seja, se essa requisição for do tipo GET, queremos executar uma ação. Para isso, teremos if request.method == 'GET':.

Essa ação será criar um estudante, ou seja, um dicionário qualquer chamado estudante, contendo algumas informações.

Numa API, geralmente temos informações como o id dessa entidade, que vamos definir como 1 (com o código'id': '1'). Também temos um nome, que será o nome do estudante no nosso caso. Podemos definir esse nome como Laís, por exemplo, com 'nome': 'lais'.

Temos um estudante. Agora, no momento em que a pessoa faz a requisição, queremos passar esse estudante. Para isso, vamos retornar um JsonResponse com esse estudante. Ou seja: return JsonResponse(estudante).

O JsonResponse, basicamente, vai transformar a informação de estudante, um dicionário do tipo Python, em um tipo JSON para colocar na nossa API.

Nossa função ficará assim:

views.py

def estudantes(request):
    if request.method == 'GET':
        estudante = {
            'id':'1',
            'nome':'lais'
        }
        return JsonResponse(estudante)

Criando a rota de estudantes

Agora que temos essa informação, o próximo passo é criar a nossa rota. Então, na pasta de "setup", vamos abrir o arquivo urls.py.

Podemos apagar o comentário que vem por padrão nesse arquivo, que explica um pouco mais sobre URLs.

Vamos importar o método estudantes que criamos nas nossas views do projeto "escola":

url.py

from escola.views import estudantes

Dentro do urlpatterns, vamos colocar o nosso novo path, ou seja, a rota de estudantes. Neste caso, criamos mais um path() recebendo o caminho estudantes/ e a view equivalente àquele estudante, ou seja, estudantes.

urlpatterns = [
    path('admin/', admin.site.urls),
    path('estudantes/',estudantes),
]

Teste

Agora podemos começar a verificar o resultado. Reabrimos o terminal com "Ctrl + J" e rodamos o seguinte comando para subir o servidor:

python manage.py runserver

Com o servidor rodando, recebemos a resposta com a informação de que existem algumas migrações não aplicadas, mas não tem problema. Vamos copiar o link da linha "Starting development server at" (que deverá ser parecido com o da instrutora, http://127.0.0.1:8000/) e colar no campo de URL de uma nova aba do navegador para acessá-lo.

Como retorno, a página informa que essa rota não foi encontrada. Mas a rota estudantes existe, então completamos a URL com /estudantes (por exemplo, a URL da instrutora ficou http://127.0.0.1:8000/estudantes).

Essa página exibe exatamente o dicionário que criamos com as informações de estudante:

{"id":"1", "nome":"lais"}

Conseguimos passar a informação para a nossa rota, mas não de uma forma muito eficiente, pois tivemos que construir um dicionário para isso. Em outras palavras, nós conseguimos trabalhar apenas com o Django, mas de uma forma bem mais limitada e complexa.

Foi com o surgimento dessa demanda por construções de APIs e APIs REST no mercado que surgiu o Django REST Framework. Ele é, basicamente, um framework que utiliza os recursos do Django com alguns recursos adicionais voltados apenas para a construção de APIs web. E é com esse framework que vamos começar a trabalhar!

Sobre o curso Django REST Framework: construindo APIs RESTful do Zero

O curso Django REST Framework: construindo APIs RESTful do Zero possui 105 minutos de vídeos, em um total de 44 atividades. Gostou? Conheça nossos outros cursos de Python em Back-end, ou leia nossos artigos de Back-end.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Python acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas