• Sistemas Web
  • Django REST e React

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:

/api/notes

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:

GET /notes

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:

GET /api/notes

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:

Usuário
   |
   v
Front-end em React
   |
   v
API em Django REST
   |
   v
Banco de dados

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.