블로그 URL에 같은 검색 키가 두 번 있을 때: get과 getAll로 값 누락 확인

URL에 같은 검색 키가 두 번 들어 있으면 한 값만 읽은 결과를 전체 값이라고 보고하지 마세요. JavaScript의 URLSearchParams에서 get은 첫 값을, getAll은 해당 키의 모든 값을 배열로 돌려줍니다.
블로그 링크를 검수할 때 원본 주소와 프로그램이 읽은 값을 구분하는 작은 예시입니다. 아래 example.com 주소는 설명용 가상 데이터이며 실제 게시물이나 신청 사이트로 안내하는 링크가 아닙니다.
1. 키 이름은 하나여도 값은 여러 개일 수 있습니다
https://example.com/read?tag=travel&tag=food
이 주소에서는 tag라는 키가 두 번 쓰였습니다. travel과 food는 각각의 값입니다. 눈으로 주소를 읽었을 때 두 값이 있다는 사실과, 도구가 어느 방식으로 값을 추출했는지를 따로 확인합니다.
반복된 키가 무조건 오류라는 뜻은 아닙니다. 목적지 서비스가 여러 값을 어떻게 처리하는지는 그 서비스의 규칙으로 확인해야 합니다. 이 글은 URLSearchParams가 값을 읽는 동작을 설명하며 모든 웹사이트의 서버 처리를 단정하지 않습니다.
2. get과 getAll 결과를 비교하기
MDN은 get이 주어진 검색 키에 대응하는 첫 값을 반환하며 키가 없으면 null이라고 설명합니다. getAll은 그 키에 대응하는 모든 문자열 값을 배열로 반환하고, 해당 값이 없으면 빈 배열을 반환합니다.
const params = new URLSearchParams("tag=travel&tag=food");
params.get("tag"); // "travel"
params.getAll("tag"); // ["travel", "food"]
params.get("missing"); // null
params.getAll("missing"); // []예시는 네트워크에 접속하지 않고 문자열을 읽는 코드입니다. 실제 계정의 토큰이나 개인정보가 든 주소를 공개 코드·질문 게시판에 붙이지 마세요.
3. 검수 결과에 남길 비교표
| 검수 항목 | 가상 기대값 | 확인할 차이 |
|---|---|---|
| 원본 tag 개수 | 2개 | 주소에 들어 있는 항목 |
| get 결과 | travel | 첫 값 하나 |
| getAll 결과 | travel, food 배열 | 해당 키의 모든 값 |
| 없는 키 | null / 빈 배열 | 메서드에 따라 결과 형식이 다름 |
첫 값을 얻었다는 사실을 두 번째 값이 삭제됐다는 뜻으로 바꾸지 마세요. 먼저 선택한 메서드를 확인해야 원본 문제와 읽기 방식의 차이를 구분할 수 있습니다.
4. 링크를 고치기 전 원본을 보존하기
가령 검수표에 travel만 기록돼 있다고 합시다. 원본 URL에는 food도 있는데, get만 사용했다면 도구의 동작에 따른 결과일 수 있습니다. 원본을 다시 생성하거나 키를 무조건 삭제하기 전에 getAll로 전체 값을 비교합니다.
반복된 키를 서비스가 지원하지 않는다면 목적지 문서를 확인하고 사본에서 주소를 수정하세요. 원본·수정안·검수 결과를 구분하면 어떤 항목을 바꿨는지 설명하기 쉽습니다.
URL 문자열의 값이 맞는 것과 목적지 공개 글이 실제로 열리는 것은 다른 검수입니다. 실제 링크에는 공개 여부와 최종 목적지 확인도 필요합니다. 특정 서비스의 동작을 이 코드 한 번으로 전부 검증했다고 보고하지 않습니다.
5. 검색 키 검수의 질문
get에 하나만 나오면 두 번째 값이 없어진 건가요?
그 결과만으로 삭제를 단정할 수 없습니다. get은 첫 값을 읽으므로 원본과 getAll 결과를 비교하세요.
같은 키는 전부 지워야 하나요?
목적지 서비스의 규칙에 따라 판단합니다. 반복 자체를 무조건 오류로 처리하지 않습니다.
빈 배열과 null은 같은 표기인가요?
아닙니다. 없는 키를 확인할 때도 호출한 메서드와 반환 형식을 함께 기록하세요.
MDN getAll 공식 동작 확인하기편집 미리보기 blob 주소와 공개 URL 구분하기자료 확인: 2026년 10월 7일. 출처: MDN get, MDN getAll.
대표 썸네일은 이해를 돕기 위해 AI로 제작한 삽화이며 실제 제품 사진이나 공식 화면이 아닙니다.