Skip to content

O básico sobre o protocolo HTTP

Dayanne Fernandes edited this page May 7, 2018 · 2 revisions

Introdução

Esse tópico sobre protocolo HTTP tem a intenção de ser básico e mostrar o suficiente pra quem está iniciando conseguir prosseguir sem problemas. A ideia é não aprofundar muito nos detalhes e deixar as coisas o mais simples possível. Para detalhes mais a fundo, você pode consultar essa documentação.

O que é HTTP?

O Hypertext Transfer Protocol, sigla HTTP (em português Protocolo de Transferência de Hipertexto) é um protocolo que permite a obtenção de recursos, como documentos HTML. É a base de qualquer troca de dados na Web e um protocolo cliente-servidor, o que significa que os pedidos são iniciados pelo destinatário, geralmente o navegador da Web.

Como funciona?

As mensagens enviadas pelo cliente, geralmente um navegador da Web, são chamadas de requisições (requests), e as mensagens enviadas pelo servidor como resposta são chamadas de resposta (response). Clientes e servidores se comunicam trocando mensagens individuais, ou seja, cada requisição gera uma resposta.

Pensando de maneira mais prática, quando você digita a URL https://github.com/unb-cic-esw/Desenvolvendo-Software no navegador e aperta enter, ocorre o seguinte:

  1. O navegador vai criar uma requisição com parâmetros como
ResquestURL: https://github.com/unb-cic-esw/Desenvolvendo-Software
RequestMethod: GET
...

(O GET será explicado mais a frente)

  1. A requisição é enviada ao servidor do Github.
  2. O servidor tem mapeado qual página (ou recurso) ele deve buscar quando uma requisição para unb-cic-esw/Desenvolvendo-Software é feita. Tal recurso, no caso, é uma página HTML, e outros elementos associados como CSS, JS, etc.
  3. O navegador interpreta o HTML e mostra a página que podemos ver aqui.

Métodos de Requisição HTTP

O protocolo HTTP define uma série de Métodos de Requisição responsáveis por indicar a ação a ser executada na representação de um determinado recurso. Isso quer dizer que os métodos definem comportamentos e significados diferentes para uma requisição.

Quando você faz o cria uma aplicação, ela pode fazer requisição para outras APIs. O método de requisição HTTP é definido na criação da requisição HTTP. Existem outros métodos, mas os mais interessantes para agora começo são:

GET

O Método GET é utilizado para solicitar uma representação de um recurso específico, requisições utilizando o Método GET devem retornar apenas dados. E.g. :

>>> import requests
>>>
>>> response = requests.get('http://httpbin.org/ip')
>>> response.content
b'{\n  "origin": "189.6.17.123"\n}\n'

Usando GET para passar parâmetros pela URL

>>> import requests
>>>
>>> payload = {'key1': 'value1', 'key2': ['value2', 'value3']}
>>>
>>> response = requests.get('http://httpbin.org/get', params=payload)
>>> print(response.url)
http://httpbin.org/get?key1=value1&key2=value2&key2=value3

POST

O Método POST é utilizado para submeter uma entidade a um recurso específico, às vezes causando uma mudança no estado do recurso ou solicitando alterações do lado do servidor. E.g. :

>>> import requests
>>>
>>> response = requests.post('http://httpbin.org/post', data={'key': '123'})
>>> response.content
b'{\n  "args": {}, \n  "data": "", \n  "files": {}, \n  "form": {\n    "key": "123"\n  }, \n  "headers": {\n    "Accept": "*/*", \n    "Accept-Encoding": "gzip, deflate", \n    "Connection": "close", \n    "Content-Length": "7", \n    "Content-Type": "application/x-www-form-urlencoded", \n    "Host": "httpbin.org", \n    "User-Agent": "python-requests/2.18.4"\n  }, \n  "json": null, \n  "origin": "189.6.17.123", \n  "url": "http://httpbin.org/post"\n}\n'

PUT

O Método PUT substitui todas as atuais representações de seu recurso alvo pela carga de dados da requisição.

DELETE

O Método DELETE remove um recurso específico.

Outras fontes

Explanation HTTP for Dummies - https://www.youtube.com/watch?v=MBwdO30YsGs

Como funciona uma requisição HTTP? - https://www.youtube.com/watch?v=fhAXgcD21iE&t=1s

Referências

https://developer.mozilla.org/en-US/docs/Web/HTTP