Como codificar corretamente uma URL em JavaScript? Diferença entre encodeURI, encodeURIComponent e escape
Olá a todos! Sou novo em JavaScript e me deparei com um problema ao trabalhar com URLs. Preciso enviar uma requisição GET para um servidor com parâmetros que contêm caracteres especiais, como espaços, cirílico ou pontos de interrogação.
Aqui está um exemplo do meu código:
```javascript
let baseUrl = "https://api.example.com/search";
let query = "JavaScript & HTML/CSS уроки";
let fullUrl = baseUrl + "?q=" + query;
fetch(fullUrl)
.then(response => response.json())
.then(data => console.log(data));
```
Esse código não funciona porque a URL tem espaços e o caractere `&`. Pesquisei no Google e encontrei três funções: `escape()`, `encodeURI()` e `encodeURIComponent()`. Mas fiquei confuso — qual delas é a correta? Quando uso `escape()`, parece funcionar, mas ouvi dizer que ela está obsoleta. Já `encodeURI()` não codifica tudo, enquanto `encodeURIComponent()` codifica até as barras.
Por favor, me digam como codificar corretamente uma URL em JavaScript? Em quais casos usar cada uma dessas funções? E o que fazer se