자바스크립트에서 보편적으로 사용하는 api는 URLSearchParams입니다. 그러나 중첩된 객체/배열 등 복잡한 것을 다루려면 qs API를 사용해야 합니다. 차이점을 정리해 보겠습니다.
const params = new URLSearchParams("name=John&age=30");
URLSearchParams 객체 생성
const name = params.get('name'); // 'John'
특정 파라미터의 값 읽기
params.set('age', 31); // 쿼리 스트링이 'name=John&age=31'로 변경됩니다.
새로운 값이나 기존 값을 변경
params.append('job', 'Engineer'); // 쿼리 스트링이 'name=John&age=31&job=Engineer'로 변경됩니다.
새로운 파라미터를 추가
params.delete('age'); // 'age' 파라미터가 삭제됩니다.
쿼리 스트링에서 특정 파라미터를 삭제
const queryString = params.toString(); // 'name=John&job=Engineer'
모든 파라미터를 포함한 쿼리 스트링을 얻을 수 있습니다. (URL 직접 붙여 보낼때 사용, `https:...?${params.toString()` )
for (const [key, value] of params) {
console.log(`${key}: ${value}`);
}
쿼리 스트링의 모든 키와 값을 순회
const hasName = params.has('name'); // true
쿼리 스트링에서 특정 파라미터의 존재 여부를 확인
// URL과 쿼리 파라미터를 정의합니다.
const baseUrl = "https://api.example.com/data";
const queryParams = new URLSearchParams({
name: "John",
age: 30
});
// URLSearchParams 객체를 이용해 쿼리 스트링을 완성합니다.
const urlWithQuery = `${baseUrl}?${queryParams}`;
// fetch API를 사용하여 GET 요청을 보냅니다.
fetch(urlWithQuery)
.then(response => response.json()) // 응답을 JSON 형식으로 변환합니다.
.then(data => console.log(data)) // 서버로부터 받은 데이터를 콘솔에 출력합니다.
.catch(error => console.error('Error:', error)); // 에러 처리
const qs = require('qs');
const object = {
user: {
name: "John Doe",
age: 30,
preferences: {
newsletter: true,
interests: ['sports', 'music']
}
}
};
const queryString = qs.stringify(object, { encode: false });
console.log(queryString);
{encode: false} 옵션은 쿼리 스트링 내의 문자열을 URL 인코딩하지 않게 합니다. 여기서 "URL 인코딩"은 URL에서 사용할 수 없는 문자를 % 기호와 함께 16진수 코드로 변환하는 방식입니다. 예를 들어, 공백은 %20으로 변환되는데, false를 주어 변환하지 말라는 옵션입니다. 특수문자 "&" 가 있는 경우 "%26"로 인코딩 하지 말고, 그대로 & 처리하라는 의미입니다. 일반적으로 &와 같은 특수 문자는 URL에서 새로운 파라미터를 시작하는데 사용되기 때문에, 인코딩 없이 사용하면 예상치 못한 결과를 초래할 수 있으니 사용에 주위를 요합니다.
user[name]=John Doe&user[age]=30&user[preferences][newsletter]=true&user[preferences][interests][0]=sports&user[preferences][interests][1]=music
const qs = require('qs'); // Node.js 환경에서는 이렇게 불러옵니다.
const queryString = 'user[name]=John Doe&user[age]=30&user[preferences][newsletter]=true&user[preferences][interests][0]=sports&user[preferences][interests][1]=music';
const parsedObject = qs.parse(queryString);
console.log(parsedObject);
UUID (0) | 2024.04.26 |
---|---|
window.location.search (0) | 2024.04.25 |
firebase hosting + vite.js (0) | 2024.04.17 |
Vite.js 에서 환경변수 사용 .env (1) | 2024.04.17 |
default 와 Object import 문 (1) | 2024.04.03 |