O que é REST API

Remotamente falando, a API REST é necessária para criar um site. Mas, afinal, isso requer muitas coisas (você diz) - em qual parte da API REST?



Frontend e Backend



Vamos começar em ordem. O que são front-end e back-end? O site possui duas faces: frontal e interna, respectivamente. O primeiro geralmente é responsável pelo arranjo visual dos objetos na página (onde estão quais imagens, onde estão quais textos e quais botões). O segundo é responsável pelas “ações”. Normalmente, são cliques nos mesmos botões ou em outras “coisas” do site. Por exemplo, você vai para a página de sua rede social favorita e primeiro precisa fazer login em sua conta. Na parte frontal (frontend) você insere seu nome de usuário e senha e clica no botão "Login". Neste momento, a solicitação é enviada ao banco de dados para verificar a presença de tal usuário e, em caso de sucesso, você será encaminhado para a rede social da sua conta, caso contrário, verá uma mensagem de erro. Nesse caso, o back-end é essencialmente responsável por enviar uma solicitação ao banco de dados.Geralmente é dividido em três sub-partes:



  1. API da Web para aceitar solicitações
  2. Lógica de negócios para processar solicitações
  3. Interação com o banco de dados


Neste artigo, falaremos principalmente sobre API ou Interface de Programação de Aplicativos e um pouco sobre lógica de negócios. Mas primeiro, vamos criar um servidor.



Criando seu próprio servidor



É assim que se parece o aplicativo de servidor Python mais simples usando a estrutura flask:



from flask import Flask

app = Flask(__name__)

@app.route("/")

def index():

   return "Hello, World!"

app.run()


Já existe uma rota vazia (“/”) e se você executar este aplicativo e abrir o navegador na página 127.0.0.1 : 5000, verá a inscrição “Hello, World!”. Do lado do servidor, você verá a seguinte mensagem:



127.0.0.1 - - [07 / Ago / 2020 20:32:16] "GET / HTTP / 1.1" 200 - Assim, ao acessar este link no navegador (cliente), fazemos Uma solicitação GET para o nosso servidor e entramos na função de índice - a partir daqui, “Hello, World!” É obtido. Você pode adicionar outras consultas (muito mais complexas) ao longo de outras rotas (ou não necessariamente). Como eu disse, neste caso usamos uma solicitação GET - o padrão padrão. Mas há muitos outros, os mais populares são POST, PUT, DELETE. Mas por que isso é necessário?



Criar Ler Atualizar Excluir



Primeiro, REST significa Transferência de Estado Representacional (ou, de uma forma mais simples, Transferência de Estado Representacional). Na verdade, a definição de REST em si não é tão importante, mas geralmente está associada a outra sigla - CRUD - Create Read Update Delete. No início, dei um exemplo relacionado a um banco de dados e essas quatro operações são parte integrante do trabalho com ele (bem, ou apenas com dados).



Em segundo lugar, uma API REST ou RESTfull deve suportar o manuseio dessas quatro ações. É aqui que os métodos GET, POST, PUT, DELETE são úteis. Como regra (não necessariamente!) O método POST é usado para adicionar novos dados (Criar), GET - para ler (Ler), PUT - para atualizar os dados existentes (Atualizar) e DELETE, respectivamente, para excluir (Excluir). Por exemplo, o mesmo aplicativo de frasco pode ser redesenhado assim:



from flask import Flask, request

app = Flask(__name__)

@app.route("/", methods=["POST", "GET", "PUT", "DELETE"])

def index():

   if request.method == "POST":

       #   

   if request.method == "GET":

       #  

   if request.method == "PUT":

       #  

   if request.method == "DELETE":

       #  

app.run()


Esta é a API REST primitiva. O frontend agora pode enviar solicitações e, dependendo do tipo, tomaremos outras providências.



Trabalhando com dados



Nosso aplicativo atual não é nada interessante - seria bom trabalhar com alguns dados. Para fazer isso, você precisa pensar em como transferi-los. A forma mais popular é o formato JSON (mas você pode usar outros, por exemplo, XML). É análogo a um dicionário em python e é muito fácil de usar. Usarei dados primitivos como exemplo com autorização em uma rede social:



data = {

   1: {

       "login": "login1",

       "password": "Qwerty1"},

   2: {

       "login": "login2",

       "password": "Ytrewq2"}

   }


Temos um dado em que há dois usuários até o momento (login1 e login2) e faremos CRUD nesta data. Deve-se dizer que todos os quatro métodos raramente funcionam na mesma rota e geralmente fazem isso: para os métodos GET (retornar todos os usuários) e POST, a rota é usada, por exemplo, “/ usuários”, e para os métodos GET (distribuir um usuário por seu id), PUT e DELETE “/ users / id”. Também deve ser destacado que para atualizar e criar novos usuários, recebemos dados sobre eles no corpo da solicitação (request.json). Agora nosso programa pode ser reescrito da seguinte forma:



from flask import Flask, request

app = Flask(__name__)

data = {

   1: {

       "login": "login1",

       "password": "Qwerty1"},

   2: {

       "login": "login2",

       "password": "Ytrewq2"}

   }

@app.route("/users", methods=["POST", "GET"])

def work_with_users():

   if request.method == "POST":

       data[max(data.keys())+1] = request.json

       return {"message": "User was created"}, 201

   if request.method == "GET":

       return data, 200

@app.route("/users/<int:user_id>", methods=["GET", "PUT", "DELETE"])

def work_with_user_by_id(user_id):

   if request.method == "GET":

       return data[user_id], 200

   if request.method == "PUT":

       data[user_id]["login"] = request.json["login"]

       data[user_id]["password"] = request.json["password"]

       return {"message": "User was updated"}, 200

   if request.method == "DELETE":

       data.pop(user_id)

       return {"message": "User was deleted"}, 200

app.run()


Existem muitos programas para solicitações de teste (Postman, Fiddler, Insomnia ...) e eu recomendo que você se familiarize com um deles (pessoalmente, Postman é o meu favorito). Com a ajuda deles, você pode ver o que vem como resultado da solicitação e com qual código de status (números 200/201 em return'ah). E você também pode preparar o envio de dados adicionando-os ao corpo da solicitação.



Também é importante notar que esta abordagem não é usada atualmente, e a biblioteca flask-restplus (ou o flask-restx que a substituiu) é geralmente usada, mas acho que primeiro você precisa se familiarizar com o frasco puro. Também é necessário verificar a disponibilidade dos dados e sua exatidão e prever o retorno de um erro nos casos opostos.



Conclusão



APIs REST são simplesmente métodos CRUD que são acessados ​​pelo lado do cliente do site ao longo de certas rotas. De ouvido e de relance, isso pode ser difícil de perceber, então eu recomendo escrever seu próprio servidor por analogia com o exemplo. Pessoalmente, acho o flask um dos frameworks mais fáceis para isso, e se você é um iniciante, eu o aconselho a experimentá-lo.



All Articles