Estrutura de uma URL
Tags: braziliandevs, fundamentos, internet, url
Published: 2022-01-12 17:39:57

Quando digitamos um endereço na web para acessar um determinado site, informamos uma URL para que o navegador possa encontrar e acessar a página, serviço ou recurso.

## O que é uma URL?

URL (acrônimo em inglês para Uniform Resource Locator) é um padrão definido em 1994 na RFC 1738 por Tim Berners-Lee (conhecido como o pai da "world Wide Web").

Uma URL é composta por uma série de informações específicas e um conjunto limitado de caracteres pertencentes ao conjunto de caracteres US-ASCII, seguindo um padrão para que possamos encontrar um serviço ou um recurso específico. Dessa forma os caracteres permitidos não incluem os acentos como os encontrados na língua portuguesa.

Para encontrarmos o que desejamos, precisamos digitar a URL corretamente.

## Entenda a estrutura de uma URL
![Estrutura de uma URL](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zmgwymsnl9ga3ybt9g3k.png)

Uma URL possui a seguinte estrutura:

### 1. Protocol (protocolo)

```
https://
```
Toda URL se inicia com um protocolo para sinalizar o tipo de comunicação será feita através do endereço digitado para acessar um recurso na Internet.

Neste exemplo, o protocolo usado é o https. Contudo, existem muitos outros (FTP, News, Mailto, etc.).

### 2. Host

```
www.diegonovais.com.br
```
O host é um nome (composto pelo **subdomínio** quando houver e pelo **domínio**) identificando um computador na internet (ou seu número de endereço IP).

### 3. Port (porta)
```
https://www.diegonovais.com.br:3000
```
A porta é um número TCP associado ao protocolo usado na URL (como no exemplo **:3000**). A porta pode estar explicito apontando para uma porta específica, mas geralmente a porta não fica explicita na URL pois cada protocolo tem uma porta padrão (convenciona-se por exemplo que http é dado pela porta 80).

### 4. Path (caminho)
```
https://www.diegonovais.com.br:3000/blog/technologies.html
```
O path é localização para encontrar o recurso, arquivo ou objeto dentro do servidor (exemplo **/blog/technologies.html**).

### 5. Query String (parâmetros)
```
https://www.diegonovais.com.br:3000/blog/technologies.html?name=ruby&subject=fundamentals
```
A query string é um conjunto de um ou mais pares "pergunta-resposta" ou "parâmetro-argumento". Como no exemplo acima após `?` (interrogação): 

**?name=ruby&subject=fundamentals**

Para entendermos melhor:

```
name = ruby
subject = fundamentals
```

Quando é feita a requisição no servidor as query strings são enviadas ao servidor para que seja possível filtrar ou mesmo criar o recurso.

### 6. Fragment (fragmento)

```
https://www.diegonovais.com.br/blog/technologies.html?name=ruby&subject=fundamentals#starting
```
Um fragmento representa um **"marcador" (âncora)** que permite o navegador dar **scrool** na página (HTML) até encontrar e mostrar um determinado conteúdo referente a um elemento `id` com uma string igual ao valor passado ao fragmento: `id="starting"`. Sua representação é a partir de um `#` seguido de uma string, como no exemplo acima: `#starting`. Além disso o fragmento não será enviado para o servidor junto com a requisição.