Entre para a LISTA VIP da Black Friday

00

DIAS

00

HORAS

00

MIN

00

SEG

Clique para saber mais
Alura > Cursos de Programação > Cursos de Python > Conteúdos de Python > Primeiras aulas do curso API com Django 3: Django Rest Framework

API com Django 3: Django Rest Framework

Instalando o Django Rest API - Introdução

Olá! Meu nome é Guilherme Lima e eu serei o seu instrutor no curso API com Django 3: Django Rest API.

O que aprenderemos

Nesse treinamento, aprenderemos a criar uma API do zero, utilizando a linguagem Python e Django Rest Framework.

O projeto

Fazendo esse curso, você será capaz de criar suas próprias APIs. Nesse treinamento, criaremos a API de uma escola, onde seremos capazes de:

Entenderemos tudo isso, vinculando o admin do Django com a nossa API. Fazendo esse curso, você será capaz de criar suas próprias APIs, vinculando modelos, recursos diferentes, entendendo o funcionamento e o padrão Rest.

Pré-requisito

É muito importante que você tenha visto os cursos anteriores de Django, porque daremos continuidade a partir deles.

Público-alvo

Esse curso é para todas as pessoas que têm vontade de entender o que é uma API e a criar uma API. Pessoas que talvez nunca criaram uma API, porque aprenderemos desde os fundamentos até a nossa API funcionando.

Se você é um expert em API, já trabalha há muito tempo no mercado e tem muito conhecimento dessa área, talvez esse curso não seja recomendado para você. Isso porque vamos consolidar bastante os nossos fundamentos sobre o desenvolvimento de uma API, utilizando o Phyton e o Django Rest Framework.

Sabendo disso, vamos começar?

Instalando o Django Rest API - O que é uma API?

Antes de começarmos a criar as linhas de código para desenvolver a nossa API, vamos responder à seguinte pergunta:

O que é uma API?

Para explicar isso, vou utilizar um exemplo muito comum do nosso dia a dia.

Pense num grupo de amigos que foi a uma determinada pizzaria. Chegando lá, eles são atendidos por um garçom, que passa a lista de pizzas que aquela pizzaria faz. Eles decidem comer a pizza de pepperoni, por exemplo.

O garçom pega o pedido feito por aqueles clientes e entrega para equipe de pizzaiolos que vai criar aquela pizza, dizendo: chegou um pedido dos clientes de uma pizza de pepperoni. A equipe prepara a pizza e, quando essa pizza está feita, o garçom busca a pizza de pepperoni e leva para aqueles clientes que fizeram aquele pedido.

Você pode se perguntar: o que a pizza de pepperoni, o garçom, os clientes e o pizzaiolo tem a ver com o API Rest? Tem tudo a ver com o API. Se separarmos as entidades, temos os clientes, o garçom e o pizzaiolo.

Os clientes que pediram a pizza podem ser representados no mundo da computação por um sistema web ou uma aplicação mobile que vai fazer um pedido para alguém. O pedido não será para o garçom, e sim para uma API, trazendo aqui para o nosso contexto. Então, outro sistema vai fazer um pedido, que chamaremos de requisição.

Faremos uma requisição, por exemplo, para saber quantos alunos estão matriculados em um determinado curso. A API pega essa requisição e, de alguma forma, ela precisa acessar os dados, criados em algum outro lugar, para exibir uma resposta para aquele cliente que fez o pedido.

Uma API pode disponibilizar dados, informações ou funcionalidades, para aqueles clientes que fizeram pedido. Então ela pega esses dados ou funcionalidade do pedido e devolve uma resposta para o cliente que pediu, tal como o garçom pegou a pizza de pepperoni e levou para os clientes que pediram.

Se focarmos nos três, ou seja, Sistema Web, API e Base de dados, temos uma coisa interessante. Através de requisições e respostas, conseguiremos atender a todos os pedidos do sistema web, independente da linguagem em que ele foi feito, como Python, Java, Ruby ou uma aplicação mobile.

Então um sistema web fará um pedido em forma de requisição e exibiremos essa resposta. Essa resposta geralmente é enviada de volta no formato de JSON ou XML. E o que é API?

A API é um núcleo comum de funcionalidades que pode ser usado por várias plataformas diferentes, sendo elas aplicações web, sites, aplicações móveis ou até outras APIs.

Sabendo disso, no próximo vídeo, começaremos a escrever nossos códigos e criar a nossa primeira API, entendendo todo esse fluxo de fazer um pedido e depois ter uma resposta, não de uma página web, mas sim de informações de dados ou funcionalidades.

Instalando o Django Rest API - Requisição GET

Vamos começar a desenvolver nossa API!

Na atividade Preparando o ambiente tem um passo a passo de como criar um projeto, instalar o Django e como utilizar a VENV, que é o ambiente virtual do Django. É a partir desse ponto que vamos começar, com o Django instalado e com algumas configurações.

Entre essas configurações, temos a mudança da língua para o Português. Para isso, acessamos o "setup > settings.py" e adicionamos o idioma em português do Brasil e o fuso horário de São Paulo.

LANGUAGE_CODE = 'pt-br'
TIME_ZONE = 'America/Sao_Paulo'

Agora começaremos a desenvolver nossa API. Criaremos um app de escola, e na escola temos alunos, cursos e alunos matriculados em diferentes cursos. Queremos que nossa API seja capaz de:

Portanto, queremos várias funcionalidades. Para isso, a primeira coisa que precisamos ter em mente é que uma API não renderiza uma página. Vamos abrir o Terminal, pressionado "Command + J", se estiver no MacOS, ou "Ctrl + J", se estiver no Windows. Em seguida, fecharemos a aba do explorador pressionando "Command + B", no MacOS, ou "Ctrl + B", no Windows.

Meu servidor está rodando, como podemos ver pela mensagem de instalação com sucesso do Django no endereço "http://localhost:8000". Vou parar o servidor, usando o atalho "Ctrl + C". Caso ele perguntar se deseja encerrar o processo, basta pressionar "Y" e "Enter".

Feito isso, pressionaremos "Ctrl + B" para abrir a aba do Explorador novamente. No terminal integrado, escreveremos python manage.py startapp escola.

python manage.py startapp escola

Ao pressionarmos "Enter", observamos que pasta "escola" foi criada no Explorador, acima da pasta "setup".

Podemos minimizar o terminal, pressionando "Cmd + Shift + M", no MacOS, ou "Ctrl + Shift + M". Em seguida, navegaremos para "escola > view.py". Nesse arquivo teremos o controle das requisições que estão vindo e o que faremos.

Observem que quando instalamos o Django, ele vem com os shortcuts, ou seja, palavras rápidas. No view.py, através da linha from django.shortcuts import render, foi importado o render vindo desse pacote, para renderizarmos uma página.

Entretanto, não é isso que queremos. Nós queremos que, quando chegar uma requisição para uma determinada URL, um JSON seja renderizado. Para fazer isso, mudaremos um pouco o código de importação.

Primeiramente, usaremos o pacote http do Django, ao invés do shortcuts, e importaremos o JsonResponse, ao invés do render. Portanto, temos from django.http import JsonResponse. Após essa importação, criaremos uma função chamada alunos():, onde o primeiro parâmetro que receberemos será o (request), assim como quando renderizávamos nossas páginas.

Vamos lembrar dos nossos cursos anteriores de Django, onde tínhamos alguns cenários. Quando queríamos pegar os dados de uma determinada receita, usávamos o método GET, e quando queríamos criar uma receita, usávamos o método POST.

Na função alunos(), nós verificaremos se o método que chegará para a requisição é um método GET e, se for, faremos alguma coisa. Para isso escrevemos if request.method == 'GET':.

No caso, queremos criar um JSON de exemplo, então escreveremos aluno = {'id':1, 'nome':'Guilherme'} usando o formato de dicionário para criar o conteúdo JSON. Para cada conteúdo, escrevemos o nome entre aspas simples, dois pontos (:) e o valor do conteúdo.

Pressionamos "Enter" e, na linha de baixo, escrevemos o return. Nos cursos anteriores, usávamos o render() e, dentro dos parênteses, passávamos a página que queríamos renderizar. Não é o que queremos nesse caso, em que o retorno será o arquivo aluno, em JSON, que criamos. Para isso, escrevemos JsonResponse(aluno).

from django.http import JsonResponse

def alunos(request):
    if request.method == 'GET':
        aluno = {'id': 1, 'nome': 'Guilherme'}
        return JsonResponse(aluno)

Vamos salvar esse arquivo, pressionando "Cmd + S", ou "Ctrl + S" se estiver no Windows. Para conseguirmos acessar nosso projeto e visualizarmos esse aluno, precisamos cadastrar uma URL.

Por exemplo, abriremos o navegador e, na barra de endereços, escreveremos "localhost:8000/alunos". Atualmente esse endereço não retorna uma mensagem de "Não é possível acessar esse site", mas queremos que, ao acessarmos esse endereço, possamos visualizar o arquivo JSON aluno, e não uma página.

Para isso, navegaremos para "setup > urls.py". Nesse arquivo temos todas as URLs cadastradas na nossa aplicação. No começo do arquivo também temos o setup da configuração de URLs comentado, e podemos remover essas linhas, porque não vamos utilizá-las.

Nesse momento, queremos importar a view de alunos(), do arquivo views.py da pasta "escola". Para isso, no arquivo urls.py abaixo das duas importações que já foram feitas, escreveremos from escola.views import alunos.

Em seguida, dentro do urlpatterns criaremos um novo path para quando o "localhost:800/alunos" aparecer o alunos() da view.py aparecer. Portanto, escrevemos path('alunos/', alunos).

from django.contrib import admin
from django.urls import path
from escola.views import alunos

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

Nosso próximo passo é abrir o Terminal, com o atalho "Cmd + J". Escreveremos o python manage.py runserver e pressionaremos "Enter" para executar e subir o servidor, afinal tínhamos parado ele.

Quando executamos, ele avisa que temos migrações pendentes nesse projeto, porque ainda não fizemos nenhuma migração e nem cadastramos nosso modelo. Contudo, quando voltamos para o navegador e recarregamos a página "/alunos", encontramos o cadastro que fizemos em JSON em alunos().

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

Essa é a ideia da API, disponibilizar funcionalidades diferentes através de alguns endereços. Porém queremos fazer algo muito maior do que temos agora. Baseado no endereço e no método da requisição, queremos criar ou deletar um aluno.

Observem que no Terminal do VS Code, temos uma mensagem informando que há migrações pendentes no nosso modelo. Acessando "escola > models.py", onde ficam nossos modelos de escola, não temos nada nesse arquivo além da importação do models, na linha from django.db import models.

Precisamos criar uma regra de negócio nesse arquivo para termos integração com o banco de dados. Também queremos que, no momento em que recebermos as requisições, tenhamos o retorno de um arquivo JSON.

Já existe uma ferramenta para nos auxiliar nisso, a Django REST framework, e iremos instalá-la no próximo vídeo. Ela nos ajudará nesses processos intermediários entre os dados que estamos criando e o cadastro das URLs e das rotas principais da nossa aplicação.

Faremos isso a seguir.

Sobre o curso API com Django 3: Django Rest Framework

O curso API com Django 3: Django Rest Framework possui 115 minutos de vídeos, em um total de 40 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