良い一日、友達!Dmitri Pavlutinによる
記事「JavaScriptでURLを解析する方法:ホスト名、パス名、クエリ、ハッシュ」の翻訳を紹介します。
ユニフォームリソースロケーターまたは略してURLは、Webリソース(Webページ、画像、ファイル)へのリンクです。URLは、リソースの場所とその受信方法(プロトコル(http、ftp、mailto))を定義します。
たとえば、この記事のURLは次のとおりです。
https://dmitripavlutin.com/parse-url-javascript
多くの場合、URLの特定の要素を取得する必要があります。これは、ホスト名(hostname、
dmitripavlutin.com
)またはパス名(pathname、/parse-url-javascript
)にすることができます。
URLの個々のコンポーネントを取得する便利な方法は、コンストラクターを使用すること
URL()
です。
この記事では、URLの構造と主要コンポーネントについて説明します。
1.URL構造
写真は千の言葉の価値があります。上の画像では、URLの主要なコンポーネントを見ることができます。
2. URLコンストラクター()
コンストラクター
URL()
は、URLコンポーネントを解析(解析)できるようにする関数です。
const url = new URL(relativeOrAbsolute [, absoluteBase])
引数に
relativeOrAbsolute
は、絶対URLまたは相対URLを指定できます。最初の引数が相対リンクの場合、2番目の引数absoluteBase
は必須であり、最初の引数の基礎となる絶対URLです。
たとえば
URL()
、絶対URLで初期化しましょう。
const url = new URL('http://example.com/path/index.html')
url.href // 'http://example.com/path/index.html'
次に、相対URLと絶対URLを組み合わせてみましょう。
const url = new URL('/path/index.html', 'http://example.com')
url.href // 'http://example.com/path/index.html'
href
instance
プロパティURL()
は、渡されたURL文字列を返します。
インスタンス化した後
URL()
、URLコンポーネントにアクセスできます。参考までに、インスタンスインターフェイスはURL()
次のとおりです。
interface URL {
href: USVString;
protocol: USVString;
username: USVString;
password: USVString;
host: USVString;
hostname: USVString;
port: USVString;
pathname: USVString;
search: USVString;
hash: USVString;
readonly origin: USVString;
readonly searchParams: URLSearchParams;
toJSON(): USVString;
}
ここで、type
USVString
は、JavaScriptが文字列を返す必要があることを意味します。
3.クエリ文字列
このプロパティを
url.search
使用すると、プレフィックスで始まるURLクエリ文字列を取得できます?
。
const url = new URL(
'http://example.com/path/index.html?message=hello&who=world'
)
url.search // '?message=hello&who=world'
クエリ文字列がない場合
url.search
は、空の文字列( '')を返します。
const url1 = new URL('http://example.com/path/index.html')
const url2 = new URL('http://example.com/path/index.html?')
url1.search // ''
url2.search // ''
3.1。クエリ文字列の解析(解析)
元のクエリ文字列を取得する代わりに、そのパラメータを取得できます。
これを行う簡単な方法は、プロパティによって提供されます
url.searchParams
。このプロパティの値は、URLSeachParamsインターフェイスのインスタンスです。
このオブジェクト
URLSearchParams
は、クエリ文字列パラメータ(get(param), has(param)
など)を操作するための多くのメソッドを提供します。
例を見てみましょう:
const url = new Url(
'http://example.com/path/index.html?message=hello&who=world'
)
url.searchParams.get('message') // 'hello'
url.searchParams.get('missing') // null
url.searchParams.get('message')
message
クエリ文字列パラメータの値を返します。
存在しないパラメーターにアクセスすると、
url.searchParams.get('missing')
が返されますnull
。
4.ホスト名(ホスト名)
プロパティ値
url.hostname
は、URLのホスト名です。
const url = new URL('http://example.com/path/index.html')
url.hostname // 'example.com'
5.パス(パス名)
プロパティに
url.pathname
は、URLパスが含まれています。
const url = new URL('http://example.com/path/index.html?param=value')
url.pathname // '/path/index.html'
URLにパスがない場合
url.pathname
は、次の文字を返します/
。
const url = new URL('http://example.com/');
url.pathname; // '/'
6.ハッシュ
最後に、ハッシュはプロパティを介して取得できます
url.hash
。
const url = new URL('http://example.com/path/index.html#bottom')
url.hash // '#bottom'
ハッシュがない場合
url.hash
は、空の文字列( '')を返します。
const url = new URL('http://example.com/path/index.html')
url.hash // ''
7. URLの確認(検証)
コンストラクターを呼び出すと、
new URL()
インスタンスが作成されるだけでなく、渡されたURLが検証されます。URLが有効でない場合、URLは破棄されTypeError
ます。
たとえば、の
http ://example.com
後にhttp
スペースがあるため、有効なURLではありません。
このURLを使ってみましょう:
try {
const url = new URL('http ://example.com')
} catch (error) {
error // TypeError, "Failed to construct URL: Invalid URL"
}
'http ://example.com'
間違ったURLであるnew URL('http ://example.com')
投げ予想通りTypeError
。
8.URLの操作
などのプロパティ
search, hostname, pathname, hash
は書き込み可能です。
たとえば、既存のURLのホスト名を
red.com
からblue.io
:に変更してみましょう。
const url = new URL('http://red.com/path/index.html')
url.href // 'http://red.com/path/index.html'
url.hostname = 'blue.io'
url.href // 'http://blue.io/path/index.html'
プロパティ
origin, searchParams
は読み取り専用です。
9.結論
コンストラクター
URL()
は、JavaScriptでURLを解析(解析)および検証するための非常に便利な方法です。
new URL(relativeOrAbsolute, [, absoluteBase]
最初のパラメーターとして絶対URLまたは相対URLを取ります。最初のパラメーターが相対URLである場合、2番目のパラメーターは絶対URL(最初の引数の基礎)である必要があります。
インスタンス化後
URL()
、URLの主要コンポーネントにアクセスできます。
url.search
-元のクエリ文字列url.searchParams
-URLSearchParams
クエリ文字列パラメータを取得するインスタンスurl.hostname
-ホスト名url.pathname
- 仕方url.hash
-ハッシュ値