URL과 라우팅

URLPattern 테스트어느 부분이 다른지 확인

한 줄에 URL 하나를 입력하세요. 아래에서 URLPattern 또는 경로 전용 엔진을 선택할 수 있습니다.

URLPattern 테스트

일치 패턴

후보 URL

URL과 패턴은 현재 브라우저에서 처리하며 입력 주소로 요청을 보내지 않습니다.

일치 결과

후보 URL을 한 줄 이상 입력하세요.

일치 설정

URLPattern의 *는 모든 값, 빈 필드는 빈 구성 요소를 의미합니다. 전체가 불일치해도 구성 요소별 캡처는 표시됩니다.

기본 URL은 상대 후보와 상대 문자열 패턴을 해석하며 구성 요소 모드에 조건을 추가하지 않습니다.

한도: 패턴당 512, 후보 200행, URL과 기본 URL당 2,048, 합계 131,072 UTF-16 단위. 워커 제한 2초.

결과가 만료되었거나 계산 중입니다.

호스트가 바뀌거나 끝에 슬래시가 붙으면 같은 규칙도 다른 결과를 냅니다. URLPattern 테스트는 성공할 예와 실패할 예를 함께 두고 조건을 하나씩 바꾸어 원인을 확인할 때 유용합니다.

URL 패턴 전체의 일치와 프레임워크 경로 판정은 별개의 작업입니다. 명명된 그룹과 와일드 카드의 의미를 실제 라이브러리 결과로 확인하세요. 일치 결과가 서버의 응답이나 처리 함수 선택을 보장하지는 않습니다.

URLPattern 테스트로 차이 찾기

전체 실패와 부분 성공 구분

URLPattern 테스트는 전체 URL 결과와 구성 요소별 진단을 따로 보여 줍니다. 호스트가 달라도 경로의 id는 캡처될 수 있습니다. 이 값은 부분 진단이며 전체 exec 호출이 성공한 것처럼 표시하지 않습니다.

하나의 패턴과 세 URL 행이 연결되고 가운데 행의 한 구성 요소만 실패한 그림.

호스트 조건의 영향 확인

URLPattern의 hostname 조건은 다른 호스트를 제외합니다. 경로 엔진은 pathname만 읽으므로 다른 호스트에 있는 같은 경로도 일치할 수 있습니다. 두 사례를 함께 두면 어떤 범위를 검사하는지 분명해집니다.

전체 주소 검사는 다른 호스트를 제외하고 경로 전용 검사는 두 후보 모두를 허용하는 비교.

입력보다 먼저 문법을 확인하세요

01

빈칸과 별표를 구분

구성 요소 모드는 8개 필드를 명시적으로 전달합니다. *는 모든 값, 빈칸은 빈 구성 요소만 허용합니다. 기본 URL은 후보 해석에만 쓰이며 구성 요소 모드에 호스트 조건을 추가하지 않습니다.

02

경로 라이브러리 버전 선택

path-to-regexp v8은 Express 5 경로 문법을 사용합니다. 선택 부분에는 중괄호를 쓰고 와일드카드에는 이름을 붙입니다. 엔진 변경은 입력을 보존하며 문법을 자동 변환하지 않습니다.

03

갱신된 결과만 내보내기

자동 검사는 마지막 편집 후 350 ms에 실행됩니다. 끄면 버튼 또는 Ctrl/Cmd + Enter로 실행합니다. 편집 즉시 이전 보고서의 내보내기를 막으므로 현재 결과가 나온 뒤 구성 요소를 펼쳐 확인하세요.

구성 요소와 캡처 살펴보기

고정 버전으로 재현

URLPattern 테스트는 urlpattern-polyfill 10.1.0과 path-to-regexp 8.4.2를 호출합니다. 보고서에는 버전, 입력과 설정이 들어갑니다. 모든 브라우저에서 같은 polyfill을 사용하며 브라우저 내장 구현을 측정하는 기능은 아닙니다.

캡처 구조 유지

URLPattern 그룹은 구성 요소별로 보존하고 추가 디코딩을 하지 않습니다. 빠진 선택 캡처는 null로 기록합니다. 경로 엔진의 이름 있는 와일드카드는 기본적으로 배열이며 디코딩을 끄면 원래 문자열을 반환합니다.

해석된 주소 표시

상대 후보는 기본 URL을 사용합니다. 원문과 정규화 결과가 다르면 함께 표시하여 기본 포트 제거, 점 경로 처리, 호스트 정규화를 확인할 수 있습니다. 패턴을 바꾸지 않아도 기본 URL 변경으로 검사 대상이 달라질 수 있습니다.

오류도 행으로 보존

유효하지 않은 주소와 디코딩 오류는 원래 행 번호로 표시하고 나머지는 계속 검사합니다. 패턴 컴파일 오류는 실행 전체를 중단합니다. 화면은 50행씩 표시하지만 JSON에는 오류를 포함한 모든 행이 들어갑니다.

검사 범위와 제한

두 문법을 섞지 않기
URLPattern은 :id?와 :id(\d+)를 지원합니다. 경로 v8은 선택 부분에 중괄호, 와일드카드에 *path처럼 이름을 요구합니다. 옛 경로 문법은 불일치가 아니라 컴파일 오류가 될 수 있습니다.
쿼리는 순서가 있는 문자열
search는 앞의 ?, hash는 앞의 #를 제외한 문자열입니다. 매개변수를 정렬하거나 집합으로 비교하지 않습니다. 경로 엔진은 pathname만 검사하므로 쿼리, 조각, 호스트는 참여하지 않습니다.
정규화와 디코딩은 별개
URL 파서는 호스트, 기본 포트, 점 경로를 정규화합니다. URLPattern 캡처를 추가로 디코딩하지 않습니다. 경로 매개변수의 잘못된 퍼센트 인코딩은 디코딩이 켜져 있으면 해당 행 오류가 됩니다.
샘플을 임의로 정리하지 않기
빈 행만 건너뛰고 중복, 공백, 원래 행 번호를 보존합니다. 제어 문자와 잘못된 Unicode는 거부합니다. URL 파서가 주변 공백을 처리하더라도 원문은 보고서에 남습니다.
실행 한도
패턴 또는 구성 요소당 512, URL과 기본 URL당 2,048, 전체 입력 131,072 UTF-16 단위까지입니다. 후보는 200행, 워커는 2초로 제한합니다. 한도 초과 시 부분 성공 결과를 내보내지 않습니다.
서버 동작은 검사하지 않기
HTTP 메서드, 미들웨어, 경로 순서와 다른 프레임워크를 실행하지 않습니다. 주소 요청, 경로 수정, 파일 가져오기, 기록 저장, 입력이 담긴 공유 링크도 제공하지 않습니다.

URLPattern 테스트 질문

대소문자를 구별하나요?

기본값은 구별입니다. 대소문자 무시를 켜서 변경하세요. 호스트는 URL 파싱 단계에서 정규화되므로 /users/42와 /USERS/42처럼 경로를 바꾸어 확인하는 편이 정확합니다.

path-to-regexp v8과 같은 문법인가요?

아닙니다. URLPattern은 8개 구성 요소를 검사하고 여기의 v8 어댑터는 경로만 검사합니다. v8의 선택 부분은 중괄호를 쓰고 별표에는 이름이 필요합니다. Express 앱 전체를 재현하지는 않습니다.

쿼리 매개변수 순서가 중요한가요?

네. 패턴 일치에 쓰는 search는 문자열이므로 a=1&b=2와 b=2&a=1은 다릅니다. 순서를 무시하는 맵 비교는 없습니다. 쿼리를 전부 제외하려면 search를 *로 설정하세요.

끝 슬래시를 붙이면 왜 일치하지 않나요?

URLPattern은 끝 슬래시를 자동으로 선택 처리하지 않습니다. /users/:id는 /users/42/와 다릅니다. 경로 엔진은 기본적으로 끝 구분자를 허용하며 옵션에서 끌 수 있습니다.

기본 포트를 캡처할 수 없는 이유는 무엇인가요?

HTTPS의 443은 URL 정규화 후 빈 port가 됩니다. 필수 이름 그룹은 그 빈 값에서 443을 얻을 수 없습니다. 해석된 주소와 실제 포트 패턴을 확인하세요.

예상과 다른 경로 결과가 있나요?

성공 사례와 반례를 함께 시험하세요

일치해야 할 주소와 실패해야 할 주소를 하나씩 남기고 조건을 하나만 바꾸어 구성 요소를 비교해 보세요.