URL
===

A interface **`URL`** é usada para analisar, construir, normalizar e codificar URLs. Ela trabalha com a disponibilização de propriedades para facilitar a leitura e modificar componentes da URL.

Normalmente você cria um novo objeto `URL` especificando a URL como string quando seu construtor é chamado, ou provendo uma URL relativa e URL base. Você pode facilmente ler e analisar os compoentes de uma URL ou fazer alterações na URL.

Se o seu navegador não tem suporte ao construtor `URL()` (en-US), você pode acessar o objeto URL utilizando a interface `Window` propriedade `URL`. Certifique-se de verificar se algum de seus navegadores precisa deste prefixo.

**Note:** This feature is available in Web Workers

Construtor
----------

`URL()` (en-US)

 Cria e retorna o objeto `URL` referenciando a URL especificada utilizando uma sring URL
 absolute, ou uma string URL relativa e uma string URL base.


Propriedades
------------

`hash`

Uma `USVString` (en-US) contendo o `'#'` seguido pelo fragmento identificador da URL.

`host`

Uma `USVString` (en-US) contendo o domínio (that is the *hostname*) seguido por (se a porta foi especificada) um `':'` e a *port* da URL.

`hostname`

Uma `USVString` (en-US) contendo o domínio da URL.

`href`

Uma função stringifier (en-US) que retorna uma `USVString` (en-US) com toda a URL.

`origin` Somente leitura 

Retorna uma `USVString` (en-US) contendo a origem da URL, este é seu esquema, domínio e sua porta.

`password`

Uma `USVString` (en-US) com a senha especificada antes do nome do domínio.

`pathname`

Uma `USVString` (en-US) contendo a inicial `'/'` seguido pelo caminho da URL, não inclui a query string ou fragmento.

`port`

Uma `USVString` (en-US) contendo o número da porta da URL.

`protocol`

Uma `USVString` (en-US) contendo o esquema de protocolo da URL, incluindo o final `':'`.

`search`

Uma `USVString` (en-US) indicando a string de parâmetros de URL's; Se algum parâmetro é disponibilizado, esta string inclui todos eles começando pelo caracter `?`.

`searchParams` Somente leitura 

Um objeto `URLSearchParams` que pode ser utilizado para acessar individualmente os parâmetros encontrados em `search`.

`username`

Uma `USVString` (en-US) contendo o nome de usuário especificado antes do nome do domínio.

Métodos
-------

`toString()`

Retorna uma `USVString` (en-US) com toda a URL. Isto é um sinônimo para `URL.href`, embora não pode ser usado para modificar o valor.

`toJSON()`

Retorna uma `USVString` (en-US) com toda a URL. Ela retorna a mesma string da propriedade `href`.

Métodos estáticos
-----------------

`createObjectURL()`

Retorna um `DOMString` contendo uma única blob URL, isto é a URL com `blob:` com seu esquema, seguido de uma string com identificador único do objeto no navegador.

`revokeObjectURL()`

Anula uma URL criada anteriormente utilizando o `URL.createObjectURL()`.

Notas de uso
------------

O construtor recebe o parâmetro `url`, e o parâmetro opcional `base` para usar como base do parâmetro `url` é uma URL relativa:


```js
const url = new URL("../cats", "http://www.example.com/dogs");
console.log(url.hostname); // "www.example.com"
console.log(url.pathname); // "/cats"
```


Propriedades da URL podem ser definidas para construir a URL:


```js
url.hash = "tabby";
console.log(url.href); // "http://www.example.com/cats#tabby"
```


As Urls são codificadas de acordo com as regras encontradas em RFC 3986. Para instância:


```js
url.pathname = "démonstration.html";
console.log(url.href); // "http://www.example.com/d%C3%A9monstration.html"
```


A interface `URLSearchParams` é usada pra criar e manipular a query string da URL.

Para obter os parâmetros da URL atual, você pode utilizar isso:


```js
// https://some.site/?id=123
const parsedUrl = new URL(window.location.href);
console.log(parsedUrl.searchParams.get("id")); // "123"
```


O método `toString()` de `URL` apenas retorna o valor da propriedade `href`, para que o construtor possa ser usado pra normalizar e codificar diretamente a URL.


```js
const response = await fetch(
  new URL("http://www.example.com/démonstration.html"),
);
```

Especificações
--------------

| Specification |
| --- |
| URL Standard # url |

Compatibilidade de browser
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Veja também
-----------

* Polyfill de `URL` em `core-js`
* URL API (en-US)
* O que é uma URL (en-US)
* A propriedade contem uma `URL` objeto: `URL`.
* `URLSearchParams`.