[Javascript] New URL(), New URLSearchParams()

    728x90
    반응형

     

     

    [Javascript] New URL(), New URLSearchParams()

     

     

    New URL()

    new URL()는 JavaScript에서 URL 객체를 생성하기 위한 생성자 함수입니다.

    이 객체는 웹 주소를 구성하는 다양한 부분에 접근하고 조작할 수 있게 해줍니다.

    예를 들어, 다음과 같은 URL이 있다고 가정해봅시다: https://www.example.com:8080/path?query=1#hash

    이 URL을 new URL()을 사용해 객체로 만들어 보면 다음과 같습니다:

    const url = new URL('https://www.example.com:8080/path?query=1#hash');

     

     

    이제 url 객체를 사용하여 URL의 각 부분에 접근할 수 있습니다. 몇 가지 주요 속성은 다음과 같습니다

     

    1. href: 전체 URL을 나타냅니다.

    console.log(url.href); // "https://www.example.com:8080/path?query=1#hash"

     

    2. protocol: URL의 프로토콜을 나타냅니다.

    console.log(url.protocol); // "https:"

     

    3. hostname: 호스트 이름 (도메인)을 나타냅니다.

    console.log(url.hostname); // "www.example.com"

     

    4. port: 포트 번호를 나타냅니다.

    console.log(url.port); // "8080"

     

    5. pathname: 경로를 나타냅니다.

    console.log(url.pathname); // "/path"

     

    6. search: 쿼리 문자열을 나타냅니다.

    console.log(url.search); // "?query=1"

     

    7. hash: 해시(fragment)를 나타냅니다.

    console.log(url.hash); // "#hash"

     

    8. searchParams: 

    URL 객체의 속성으로, 해당 URL의 쿼리 문자열을 파싱한 URLSearchParams 객체를 반환합니다.

    이는 URL과 직접 연관된 상태에서 쿼리 문자열을 조작할 수 있게 합니다.

    // URL 객체 생성
    const url = new URL('https://www.example.com?name=John&age=30');
    
    // searchParams를 통해 URLSearchParams 객체에 접근
    const params = url.searchParams;
    
    // 쿼리 문자열 조작
    params.set('name', 'Doe');
    params.append('city', 'New York');
    
    // URL이 자동으로 업데이트됨
    console.log(url.toString()); // "https://www.example.com/?name=Doe&age=30&city=New%20York"

    이처럼 URL.searchParams를 사용하면 URL과 직접 연결되어 있어

    쿼리 문자열을 조작할 때 URL 자체도 자동으로 업데이트됩니다.

     

     

     

     

     

    New URLSearchParams

    URLSearchParams는 URL의 쿼리 문자열을 쉽게 다룰 수 있도록 도와주는 JavaScript 생성자 함수입니다.

    URL의 쿼리 문자열은 ? 이후에 오는 부분으로, 키와 값의 쌍으로 이루어진 데이터를 포함합니다.

    URLSearchParams 객체를 사용하면 이 쿼리 문자열을 파싱하고, 추가, 수정, 삭제할 수 있습니다.

    예를 들어, https://www.example.com/path?name=John&age=30이라는 URL의 쿼리 문자열을 다뤄보겠습니다:

     

    const params = new URLSearchParams('name=John&age=30');

     

    이제 params 객체를 사용하여 쿼리 문자열을 쉽게 다룰 수 있습니다. 몇 가지 주요 메서드는 다음과 같습니다:

     

     

    1. get(): 특정 키의 값을 가져옵니다.

    console.log(params.get('name')); // "John"
    console.log(params.get('age')); // "30"

     

    2. set(): 특정 키의 값을 설정합니다. --> *같은 키값이 있으면 덮고, 없으면 추가

    params.set('name', 'Doe');
    console.log(params.toString()); // "name=Doe&age=30"

     

    3. append(): 새로운 키와 값을 추가합니다. --> * 같은 키값이 있어도 추가, 없어도 추가

    params.append('city', 'New York');
    console.log(params.toString()); // "name=Doe&age=30&city=New York"

     

    4. delete(): 특정 키와 그 값을 삭제합니다.

    params.delete('age');
    console.log(params.toString()); // "name=Doe&city=New York"

     

    5. has(): 특정 키가 있는지 확인합니다.

    console.log(params.has('name')); // true
    console.log(params.has('age')); // false

     

    6. forEach(): 모든 키-값 쌍에 대해 반복 작업을 수행합니다.

    params.forEach((value, key) => {
      console.log(`${key}: ${value}`);
    });
    // 출력:
    // name: Doe
    // city: New York

     

     

     

     

    new URL.searchParams와 new URLSearchParams의 차이점?

     

    1. 연결성:
      • URL.searchParams: URL 객체와 직접 연관되어 있어 URL을 조작할 때 사용됩니다.
      • URLSearchParams 생성자 함수: 독립적으로 쿼리 문자열을 다루며, 특정 URL과 연결되지 않습니다.
    2. 사용 맥락:
      • URL.searchParams: URL 전체를 포함한 상황에서 쿼리 문자열을 조작할 때 유용합니다.
      • URLSearchParams 생성자 함수: 독립적인 쿼리 문자열을 생성하거나 조작할 때 유용합니다.
    3. 자동 업데이트:
      • URL.searchParams: 쿼리 문자열을 조작하면 URL 자체가 자동으로 업데이트됩니다.
      • URLSearchParams 생성자 함수: 쿼리 문자열만 조작되며, URL 자체는 변경되지 않습니다.

    이 두 가지 도구를 상황에 맞게 사용하면 URL과 관련된 작업을 더욱 효율적으로 수행할 수 있습니다.

     

     

    728x90
    반응형

    댓글