#1 — Voltando ao Básico…URL.

Marcelo do Amaral
DevOnTheBit
Published in
3 min readNov 24, 2016

--

Olá Dev’s. Tranquilo?, aqui enquanto não der 404 tá de boa.

Continuando a série baseada nos estudos básicos do universo … anteriormente falamos sobre Recursos, agora vamos tentar entender a topologia básica de uma URL(RFC 1738).

Vamos pressupor a seguinte URL(uniforme resource locator):

http://meuexemplo.com/

Ela representa um recurso específico na internet, isto é, através dela posso interagir com a web. Como já falei no artigo anterior:

“Um documento(json,xml,doc,pdf etc etc…),uma página HTML, um vídeo, uma foto, basicamente o que pode ser endereçado e nomeado na rede.”

Podemos dividir o endereçamento em 3 partes:

1 — O “http” que vem antes do “://” é chamado de URL Scheme, ele informa como acessar o recurso, nesse caso em particular, está comunicando ao browser que ele deve utilizar o hypertext transfer protocol( ou http =) ). Masssss poderia também ser FTP (RFC 959 — transferência de arquivos ) ou mailto (RFC 2368 — endereçamento de email).
Tudo que vai depois do “://” é específico do scheme, como por exemplo: Uma URL http padrão não é compatível com uma URL mailto padrão, e vice e versa.

2 — “meuexemplo.com” é o Hostname, ele diz ao browser qual o nome do computador que está guardando o recurso. O computador utiliza o DNS(RFC 1035 — Domain Name System) pra traduzir o meuexemplo.com em um endereço de rede(afinal, ninguém quer ficar digitando número de ip(RFC 791, só pra registrar).

3 — “/computadores/1234/” esse trecho é conhecido como URL path, o hostmeuexemplo.com” deve reconhecer o caminho desse recurso específico e responder apropriadamente ao cliente.

Massss “isso quer dizer que se eu acessar, (www.meuexemplo.com/computadores/1234/) exatamente, eu vou ter um único recurso (arquivo)?”. Pois bem … sim, pode ser um caminho para um arquivo único tipo, meupc.jpg ou meupc.png ou não ...ele mais comumente pode ser uma página HTML com vários recursos atrelados (ex: css, js, dados do banco de dados e etc). recursos podem ser dinâmicos e assumir mutiplas representações(*spoiler*) meus xuxuzis(plural geneticamente modificado de xuxu).

Explicado o básico … continuemos …

Portas, Query strings e Fragmentos.

Bem, agora sabemos que uma URL tem hostname e path, observe a nossa url seguinte:

http://www.meuexemplo.com:80/

Aquele numerozinho colocado ali capirotisticamente(sim! acabei de criar essa palavra), é conhecido como Porta. Na prática já é padrão nos navegadores a porta 8080/tcp, então não precisa estar explicita toda vez que você digitar uma url. A menos que por algum motivo você esteja utilizando uma porta diferente(o que na vida de dev, não é algo tão raro assim).

Agora temos a seguinte URL:

http://www.bing.com/search?q=computador

Tudo o que vem depois do “?” É conhecido como Query string (ou só query para os íntimos). Elas são basicamente usadas para a passagem de informação no formato “chave-Valor” para o servidor.(no exemplo acima eu quero que o motor de busca do bing me traga os resultados referentes a computadores).
Eeeee se eu quiser passar mais de um parâmetro para o servidor? simples!, utilize o “&” entre cada “chave-valor” como no exemplo abaixo:

http://www.meuexemplo.com/computadores?cor=branco&marca=hp

As query strings terão um importantíssimo papel quando formos falar sobre REST e API’s (*Spoiler*).

E pra finalizar …

Observe esta URL:

http://stackoverflow.com/questions/153735/what-are-rfcs/153841#153841

A informação depois do “#”, é conhecida como Fragmento, entretanto, ele é um pedaço de informação bem diferente dos outros, enquanto todos os outros elementos que eu citei acima são processados pelo servidor, o fragmento é processado pelo cliente.(wooow!!). Ele é utilizado pra marcar determinada sessão do recurso, o exemplo mais básico, é ele marcando um elemento HTML numa página, pelo seu element ID(como no caso acima “#153841” é referente a um comentário, em específico na thread “what-are-rfcs” no “stackoverflow”).

Resumindo tudo …

Se formos juntar tudo o que foi visto até agora, montamos uma visão sobre a URL da seguinte forma:

<scheme>://<hostname>:<port>/<path>?<query>#<fragment>

Por hora é isso!! No próximo artigo, vamos dar uma volta em URL Encoding, Media Type e Contente Type.

Até a próxima =)

“Acredite nos métodos, tecnologias vão e vem.”

Referências: What Every Web Developer Should Know About HTTP

--

--

Marcelo do Amaral
DevOnTheBit

Utópico por maioria de votos. -Spica, α Vir-, Chaotic Good, Dog Lover, OOP curious.