You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 5-network/07-url/article.md
+30-30Lines changed: 30 additions & 30 deletions
Original file line number
Diff line number
Diff line change
@@ -3,7 +3,7 @@
3
3
4
4
Вбудований клас [URL](https://url.spec.whatwg.org/#api) надає зручний інтерфейс для створення та розбирання URL на частини.
5
5
6
-
Методи, що дають змогу зробити мережевий запит, не вимагають саме екземпляр класу `URL`, досить передати рядок. Тому нас нічого не зобов'язує використовувати клас `URL`. Але це дійсно може стати в нагоді.
6
+
Методи, що дають змогу зробити мережевий запит, досить передати просто рядок, вони не вимагають саме екземпляр класу `URL`. Тому нас нічого не зобов'язує використовувати клас `URL`. Але це дійсно може стати в нагоді.
URL-адреса стала довшою, бо кожен кириличний символ представлено двома байтами в UTF-8, тому там дві групи символів `%..`.
137
137
138
-
### Encoding strings
138
+
### Кодування рядків
139
139
140
-
In old times, before `URL` objects appeared, people used strings for URLs.
140
+
До появи `URL`, розробники використовували рядки для URL-адрес.
141
141
142
-
As of now,`URL` objects are often more convenient, but strings can still be used as well. In many cases using a string makes the code shorter.
142
+
Наразі, зручніше використовувати`URL`, але рядки все ще можна використовувати. У більшості випадків, використання рядків потребує менше коду.
143
143
144
-
If we use a string though, we need to encode/decode special characters manually.
144
+
Слід зауважити, якщо ми використовуємо рядки, то закодувати та декодувати символи нам потрібно вручну.
145
145
146
-
There are built-in functions for that:
146
+
Для цього є вбудовані функції:
147
147
148
-
-[encodeURI](mdn:/JavaScript/Reference/Global_Objects/encodeURI) - encodes URL as a whole.
149
-
-[decodeURI](mdn:/JavaScript/Reference/Global_Objects/decodeURI) - decodes it back.
150
-
-[encodeURIComponent](mdn:/JavaScript/Reference/Global_Objects/encodeURIComponent) - encodes a URL component, such as a search parameter, or a hash, or a pathname.
151
-
-[decodeURIComponent](mdn:/JavaScript/Reference/Global_Objects/decodeURIComponent) - decodes it back.
-[encodeURIComponent](mdn:/JavaScript/Reference/Global_Objects/encodeURIComponent) - закодувати частину URL-адреси, наприклад, параметри пошуку, шлях чи геш.
A natural question is: "What's the difference between `encodeURIComponent`and`encodeURI`? When we should use either?"
153
+
Може виникнути природне питання: "Яка різниця між `encodeURIComponent`та`encodeURI`? В якому випадку краще використовувати кожну функцію?"
154
154
155
-
That's easy to understand if we look at the URL, that's split into components in the picture above:
155
+
Це стає легше зрозуміти, якщо подивитися на URL-адресу, що показано розділеною на частини вище.
156
156
157
157
```
158
158
https://site.com:8080/path/page?p1=v1&p2=v2#hash
159
159
```
160
160
161
-
As we can see, characters such as `:`, `?`, `=`, `&`, `#`are allowed in URL.
161
+
Як бачимо, символи `:`, `?`, `=`, `&`, `#`дозволено безпосередньо використовувати в URL.
162
162
163
-
...On the other hand, if we look at a single URL component, such as a search parameter, these characters must be encoded, not to break the formatting.
163
+
...На противагу цьому, якщо ми поглянемо тільки на параметри пошуку URL, то використані там символи повинні бути закодовані, щоб не зламати форматування.
164
164
165
-
-`encodeURI`encodes only characters that are totally forbidden in URL.
166
-
-`encodeURIComponent`encodes same characters, and, in addition to them, characters `#`, `$`, `&`, `+`, `,`, `/`, `:`, `;`, `=`, `?`and`@`.
165
+
-`encodeURI`кодує тільки символи, що заборонені до використання в URL.
166
+
-`encodeURIComponent`закодує деякі символи та символи: `#`, `$`, `&`, `+`, `,`, `/`, `:`, `;`, `=`, `?`та`@`.
167
167
168
-
So, for a whole URL we can use`encodeURI`:
168
+
Отже, для кодування всього URL можна використати`encodeURI`:
As we can see, `encodeURI`does not encode`&`, as this is a legit character in URL as a whole.
195
+
Як бачимо, `encodeURI`не кодує символ`&`, оскільки це дозволений для використання в URL.
196
196
197
-
But we should encode`&`inside a search parameter, otherwise, we get`q=Rock&Roll` - that is actually `q=Rock`plus some obscure parameter `Roll`. Not as intended.
197
+
Але нам потрібно закодувати`&`всередині параметрів пошуку, інакше ми отримаємо`q=Rock&Roll`, що означатиме `q=Rock`та незрозумілий параметр `Roll`. Не те, що ми очікували.
198
198
199
-
So we should use only `encodeURIComponent`for each search parameter, to correctly insert it in the URL string. The safest is to encode both name and value, unless we're absolutely sure that it has only allowed characters.
199
+
Нам слід використовувати тільки `encodeURIComponent`з параметрами пошуку для правильного вставлення в рядок URL. Для повної безпеки, слід кодувати ім'я та значення параметрів, якщо ми не можемо бути повністю впевненими, що вони містять тільки дозволені символи.
Classes[URL](https://url.spec.whatwg.org/#url-class)and[URLSearchParams](https://url.spec.whatwg.org/#interface-urlsearchparams)are based on the latest URI specification: [RFC3986](https://tools.ietf.org/html/rfc3986), while `encode*`functions are based on the obsolete version[RFC2396](https://www.ietf.org/rfc/rfc2396.txt).
201
+
````smart header="Різниця в кодуванні у порівнянні з`URL`"
202
+
Класи[URL](https://url.spec.whatwg.org/#url-class)та[URLSearchParams](https://url.spec.whatwg.org/#interface-urlsearchparams)ґрунтуються на останній специфікації URL: [RFC3986](https://tools.ietf.org/html/rfc3986), але функції `encode*`використовують застарілу версію[RFC2396](https://www.ietf.org/rfc/rfc2396.txt).
203
203
204
-
There are a few differences, e.g. IPv6 addresses are encoded differently:
204
+
Існують деякі відмінності, як от IPv6 адреси кодуються по-іншому:
As we can see, `encodeURI`replaced square brackets`[...]`, that's not correct, the reason is: IPv6 urls did not exist at the time of RFC2396 (August 1998).
214
+
Як бачимо, `encodeURI`заміню квадратні дужки`[...]`, що є помилкою, причиною є те, що IPv6 адреси ще не існували в часи створення стандарту RFC2396 (серпень 1998).
215
215
216
-
Such cases are rare, `encode*`functions work well most of the time.
216
+
Такі випадки рідко трапляються, функції `encode*`добре справляються в більшості випадків.
0 commit comments