Alura > Cursos de Programação > 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 43 atividades. Gostou? Conheça nossos outros cursos de Python em Programação, ou leia nossos artigos de Programação.

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