O que é uma URL?
O endereço da web
Toda vez que você clica em um link, digita um endereço no navegador ou submete um formulário: você está usando uma URL. É tão comum que a maioria das pessoas nunca pensa no que é.
Uma URL (Uniform Resource Locator) é o endereço que diz ao seu navegador onde encontrar um recurso específico na internet. Assim como um endereço de rua diz ao entregador para onde ir, uma URL diz ao navegador qual servidor contactar, o que pedir e como pedir.
URL vs URI vs URN
Você às vezes verá esses termos usados como sinônimos, mas eles têm significados distintos:
| Termo | Significa | Propósito | Exemplo |
|---|---|---|---|
| URI | Uniform Resource Identifier | Um identificador genérico para qualquer recurso | Qualquer URL ou URN |
| URL | Uniform Resource Locator | Identifica um recurso E diz como localizá-lo | https://example.com/page |
| URN | Uniform Resource Name | Identifica um recurso pelo nome, sem localização | urn:isbn:0451450523 |
Pense assim:
- Um URN é como o nome de uma pessoa: identifica ela, mas não diz onde está
- Uma URL é como o endereço residencial: identifica E diz como encontrá-la
- Uma URI é o termo guarda-chuva que abrange ambos
Na prática, quase tudo na web é uma URL. Quando alguém diz "URI" no desenvolvimento web, geralmente quer dizer URL.
Anatomia de uma URL
Uma URL é composta por vários componentes, cada um com um propósito específico:
https://www.example.com:443/catalog/courses?level=intern&sort=name#section-2
└─┬──┘ └──────┬──────┘└┬┘└──────┬────────┘└──────────┬──────────┘└───┬────┘
scheme host port path query string fragment
Vamos decompor isso:
| Componente | Exemplo | Propósito |
|---|---|---|
| Scheme | https |
O protocolo a ser usado |
| Host | www.example.com |
Qual servidor contactar |
| Port | 443 |
Qual porta no servidor |
| Path | /catalog/courses |
Qual recurso solicitar |
| Query String | ?level=intern&sort=name |
Parâmetros adicionais |
| Fragment | #section-2 |
Uma seção específica dentro da página |
Nem todos os componentes são obrigatórios. Um endereço web pode ser só um scheme e um host:
https://example.com
URLs absolutas vs relativas
URLs vêm em duas formas:
URLs absolutas
Incluem o endereço completo: scheme, host e path:
https://www.example.com/catalog/courses
Usadas ao linkar para sites externos ou quando o endereço completo é necessário (emails, APIs, redirects).
URLs relativas
Omitem o scheme e o host, usando apenas o path (relativo à página atual):
<!-- Em https://www.example.com/catalog/roadmap -->
<a href="/catalog/courses">Cursos</a> <!-- Caminho absoluto -->
<a href="courses">Cursos</a> <!-- → /catalog/courses -->
<a href="../about">Sobre</a> <!-- → /about -->
| Tipo | Exemplo | Quando Usar |
|---|---|---|
| Absoluta | https://example.com/page |
Links externos, APIs, emails |
| Raiz-relativa | /catalog/courses |
Navegação interna (mais comum no Rails) |
| Relativa | courses ou ../about |
Relativa à página atual |
No Rails, você usará principalmente caminhos raiz-relativos gerados por route helpers como catalog_course_path.
Por que URLs importam para desenvolvedores
Entender a anatomia de URLs não é apenas acadêmico: é essencial para desenvolvimento web:
- Roteamento: O Rails mapeia URLs para actions de controllers. Cada rota que você define é um padrão de URL.
- SEO: Mecanismos de busca usam URLs para entender a estrutura do seu site. URLs legíveis ajudam pessoas e robôs a entender uma página, embora pesem pouco no ranking.
- Segurança: Dados sensíveis em URLs (como tokens em query strings) podem vazar pelo histórico do navegador, logs do servidor e headers de referência.
- Depuração: Quando algo dá errado, a URL é a primeira coisa que você verifica: caminho errado? Parâmetro faltando? Protocolo errado?
- APIs: APIs RESTful são construídas inteiramente em torno de URLs bem estruturadas.
# No Rails, rotas definem padrões de URL:
# GET /catalog/courses/:slug → Catalog::CoursesController#show
# A URL diz ao Rails:
# - Verbo HTTP: GET (seguro, somente leitura)
# - Controller: Catalog::CoursesController
# - Action: show
# - Parâmetro: slug = "url-anatomy"
Uma breve história
Tim Berners-Lee criou as URLs por volta de 1990, como parte da World Wide Web. A RFC 1738 as especificou pela primeira vez em 1994; as regras atuais vêm da RFC 3986 e do WHATWG URL Standard que os navegadores seguem.
O design original foi intencionalmente legível por humanos: você deveria ser capaz de olhar para uma URL e ter uma ideia aproximada do que ela aponta. Esse princípio ainda guia o bom design de URLs hoje:
# Bom: descritivo, legível
https://example.com/catalog/courses/url-anatomy
# Ruim: opaco, sem significado
https://example.com/p?id=48372&v=2&ref=x
Resumo
| Conceito | Ponto Chave |
|---|---|
| URL | Uniform Resource Locator: o endereço completo para encontrar um recurso na web |
| URI vs URL vs URN | URI é o termo guarda-chuva; URL inclui localização; URN é apenas nome |
| Componentes | Scheme, host, port, path, query string e fragment |
| Absoluta vs Relativa | Absoluta inclui o endereço completo; relativa é baseada na página atual |
| Por Que Importa | Roteamento, SEO, segurança, depuração e design de APIs dependem de URLs |
| Bom Design de URL | Legível por humanos, descritivo e logicamente estruturado |
Continue com a aula 2
Scheme e protocolo
Explica como o scheme escolhe o protocolo, compara HTTP e HTTPS e mostra outros schemes e helpers do Rails.
Com uma conta grátis você também tem os quizzes, seu progresso e suas anotações, e a discussão.