Introdução ao Django REST#
O que é uma API?#
Uma API é uma forma de permitir que sistemas diferentes conversem entre si.
A sigla API significa:
Application Programming Interface
Interface de Programação de Aplicações
Em vez de devolver uma página HTML pronta para o usuário ver, uma API geralmente devolve dados.
Esses dados costumam estar em formatos como: JSON, XML, entre outros. Atualmente, o formato mais comum em APIs web é o JSON.
Exemplo de resposta em JSON#
Ao acessar a rota:
o servidor poderia devolver os seguintes dados:
[
{
"id": 1,
"title": "Receita de miojo",
"content": "Bata com um martelo antes de abrir o pacote. Misture o tempero, coloque em uma vasilha e aproveite seu snack :)"
},
{
"id":2,
"title": "Pão doce",
"content": "Abra o pão e coloque o seu suco em pó favorito."
},
{
"id": 3,
"title": "Sorvete com cristais de leite",
"content": "Sirva o seu sorvete favorito em uma vasilha e jogue leite em cima."
},
]
Perceba que o servidor não devolveu uma página HTML.
Ele devolveu apenas os dados das anotações.
Esses dados podem ser usados por diferentes tipos de aplicação, como por exemplo: um site feito em React, um aplicativo de celular, um sistema de terceiros, etc.
Quem pode consumir uma API?#
Uma API pode ser usada por vários tipos de sistema, por exemplo:
- um site feito em React;
- um aplicativo de celular;
- outro sistema web;
- uma aplicação desktop;
- um sistema de terceiros.
Por exemplo, podemos ter:
Aplicativo de celular ---> API Django ---> Banco de dados
Site em React ---> API Django ---> Banco de dados
Sistema externo ---> API Django ---> Banco de dados

A API funciona como uma camada intermediária entre quem precisa dos dados e o banco de dados.
Django tradicional x Django REST#
Em uma aplicação Django tradicional, o servidor geralmente devolve páginas HTML.
Exemplo:
Resposta:
<h1>Anotações</h1>
<ul>
<li>Receita de miojo - Bata com um martelo antes de abrir o pacote. Misture o tempero, coloque em uma vasilha e aproveite seu snack :)</li>
<li>Pão doce - Abra o pão e coloque o seu suco em pó favorito.</li>
<li>Sorvete com cristais de leite - Sirva o seu sorvete favorito em uma vasilha e jogue leite em cima.</li>
</ul>
Já em uma API REST, o servidor devolve dados.
Exemplo:
Resposta:
[
{
"id": 1,
"title": "Receita de miojo",
"content": "Bata com um martelo antes de abrir o pacote. Misture o tempero, coloque em uma vasilha e aproveite seu snack :)"
},
{
"id":2,
"title": "Pão doce",
"content": "Abra o pão e coloque o seu suco em pó favorito."
},
{
"id": 3,
"title": "Sorvete com cristais de leite",
"content": "Sirva o seu sorvete favorito em uma vasilha e jogue leite em cima."
},
]
O que é REST?#
REST é uma forma organizada de criar APIs usando o protocolo HTTP.
O que é Django REST Framework?#
Quando falamos em Django REST, normalmente estamos falando do Django REST Framework, também chamado de DRF.
O Django REST Framework é uma biblioteca que facilita a criação de APIs usando Django.
Com ele, conseguimos criar APIs de forma mais rápida e organizada.
O papel do back-end e do front-end#
Em muitos sistemas modernos, existe uma separação entre back-end e front-end.
O back-end é responsável por:
- regras de negócio;
- acesso ao banco de dados;
- autenticação;
- validações;
- APIs.
O front-end é responsável por:
- interface visual;
- telas;
- botões;
- formulários;
- interação com o usuário.
Um exemplo de arquitetura seria:
Nesse caso, o React não acessa diretamente o banco de dados.
Ele faz requisições para a API.
A API consulta ou altera o banco e devolve uma resposta em JSON.