URL / URI Tools

URI 템플릿 파서표현식마다 결과를 확인하세요

템플릿 하나와 변수 JSON 객체를 입력하면 URI와 각 표현식이 만든 부분을 확인할 수 있습니다.

URI 템플릿 파서

URI 템플릿

변수 JSON

템플릿과 변수는 현재 브라우저에서 처리합니다. 입력과 결과의 주소로 요청을 보내지 않습니다.

확장된 URI

생략된 변수: 없음

사용하지 않은 JSON 키: 없음

표현식 상세

1행, 24열

{/version,resource}
  • 변수: version · 정의됨
  • 변수: resource · 정의됨

확장 부분: /v1/search

1행, 43열

{?q,page,tags*}
  • 변수: q · 정의됨
  • 변수: page · 정의됨
  • 변수: tags* · 정의됨

확장 부분: ?q=hello%20world&page=2&tags=red&tags=blue

표현식 2개 중 2개 표시

확장 문법

RFC 6570 Level 4: {var}, {+var}, {#var}, {.var}, {/var}, {;var}, {?var}, {&var}. :n은 접두부 길이, *는 목록과 맵의 개별 확장입니다.

UTF-16 단위 제한: 템플릿 16,384, JSON 65,536, 결과 262,144. 표현식은 최대 500개입니다.

표현식 2개 · 생략된 변수 0개 · 결과 75단위

API 주소에서 슬래시가 경로 구분자인지 식별자의 일부인지에 따라 인코딩이 달라집니다. URI 템플릿 파서에서 실제 변수 값을 넣어 보면 단순한 문자열 치환으로는 드러나지 않는 차이를 확인할 수 있습니다.

변수 확장은 이름뿐 아니라 값의 형태도 사용합니다. 문자열, 목록, 맵에 같은 연산자를 적용해도 결과가 다를 수 있습니다. 상대 참조도 입력할 수 있으므로 완전한 URL을 만들기 전에 일부 경로만 검사해도 됩니다.

URI 템플릿 파서로 원인 찾기

빠진 매개변수를 추적하기

URI 템플릿 파서는 표현식의 위치와 확장 부분을 함께 보여 줍니다. 변수가 없거나 null인지, 빈 컬렉션인지 확인하세요. 빈 문자열은 별도 상태로 표시되므로 값을 보내지 않은 경우와 빈 값을 보낸 경우를 구분할 수 있습니다.

색이 같은 변수가 템플릿의 빈칸을 채워 경로와 쿼리 부분을 구성하는 그림.

별표 하나가 바꾸는 구조

{?tags}는 목록을 쉼표로 묶은 값 하나로 만듭니다. {?tags*}는 항목마다 tags 매개변수를 반복합니다. 맵을 펼치면 구성원의 키를 사용하므로 목록과 같은 형태라고 가정하지 말고 결과 부분을 비교하세요.

위쪽은 세 항목을 하나로 묶고 아래쪽은 독립된 쿼리 쌍 세 개로 펼치는 그림.

입력 형태와 실행 시점을 확인하세요

01

키 이름을 정확하게 맞추기

user.id는 중첩 경로가 아니라 그 이름 그대로의 키입니다. 퍼센트 인코딩된 변수 이름도 디코딩하지 않습니다. 대소문자와 인코딩 표기를 템플릿과 JSON에서 동일하게 입력하세요.

02

의미별 예제를 비교하기

예약 문자 예제는 경로의 슬래시를 보존하는 경우를 보여 줍니다. 복합 값 예제는 목록, 맵과 Unicode 접두부를 다룹니다. 예제를 적용하기 전에 교체 내용을 확인하고, 적용 후에는 입력과 결과를 한 번 복원할 수 있습니다.

03

최신 결과만 내보내기

자동 확장은 수정 후 350ms 뒤 실행됩니다. 끄면 버튼이나 Ctrl/Cmd + Enter로 실행합니다. 입력을 바꾸는 즉시 이전 결과의 복사와 다운로드가 비활성화되며 현재 입력이 성공해야 다시 사용할 수 있습니다.

인코딩과 값의 차이를 상세히 확인

네 단계의 표준 문법

URI 템플릿 파서는 일반 확장과 +, #, ., /, ;, ?, &를 지원합니다. :n은 Unicode 문자 1–9999개의 접두부를 취하고 *는 목록이나 맵을 개별 확장합니다. 퍼센트 인코딩과 구분자는 연산자에 따라 결정됩니다.

긴 숫자 식별자를 그대로 유지

9007199254740993 같은 정수를 부동소수점으로 바꾸지 않습니다. JSON 숫자 토큰의 원래 표기를 유지하므로 -0과 지수 표기도 바뀌지 않습니다. 불리언은 true 또는 false 문자열로 확장됩니다.

오류와 정상적인 생략을 분리

템플릿과 JSON 문법 오류에는 행과 열이 표시됩니다. 중복 키는 거부하고 중첩 값은 JSON Pointer로 위치를 알려 줍니다. 정의되지 않은 변수는 진단 항목이며, 생략되었다는 이유만으로 확장이 실패하지는 않습니다.

재현 가능한 보고서

복사는 URI 문자열만 가져옵니다. JSON 보고서에는 템플릿, 변수 JSON 원문, 모든 표현식 상세와 생략 및 미사용 이름이 들어갑니다. 화면은 50개씩 표시하지만 다운로드에는 전체 표현식이 포함됩니다.

허용되는 입력과 지원 범위

변수 객체는 얕은 구조로
JSON 루트는 객체여야 합니다. 문자열, 숫자, 불리언, null, 스칼라 목록과 맵을 허용합니다. 사용하지 않는 값이라도 중첩 컨테이너는 거부합니다. 파일 불러오기나 여러 변수 객체의 일괄 실행은 지원하지 않습니다.
빈 문자열도 정의된 값
없는 키, null과 빈 컬렉션은 생략합니다. 컬렉션의 null 구성원도 건너뜁니다. 빈 문자열이면 {?x}는 ?x=, {;x}는 ;x가 됩니다. 유효한 변수 JSON이 있으면 빈 템플릿도 처리할 수 있습니다.
이름과 순서를 변경하지 않음
변수 이름은 대소문자를 구분합니다. 점은 경로가 아니고 이름의 퍼센트 시퀀스는 디코딩하거나 정규화하지 않습니다. 중복 키에 나중 값을 덮어쓰지 않으며 맵의 순서는 입력 JSON을 따릅니다.
주소 정규화는 별도 작업
일반 확장은 %도 다시 인코딩하지만 +와 #는 유효한 퍼센트 시퀀스와 예약 문자를 보존합니다. 리터럴의 공백은 허용하지 않습니다. Unicode는 정규화 없이 UTF-8로 인코딩하며 프로토콜, 기준 주소, 호스트 변환을 추가하지 않습니다.
크기 제한과 실패 시 동작
UTF-16 단위로 템플릿 16,384, JSON 65,536, 결과 262,144까지이며 표현식은 500개까지입니다. 공통 파서는 깊이 100, 노드 50,000, 숫자 토큰 1,000자로 제한합니다. 실패하면 이전 결과나 부분 결과를 내보낼 수 없습니다.
표준에 따른 단방향 확장
역방향 라우트 매칭, 접속 확인, 원격 입력, 기본값 문법과 스크립트 실행은 제공하지 않습니다. 구분자는 RFC 6570에 고정되어 있습니다. 특별한 조합이 필요하다면 변수 값을 미리 문자열로 준비하세요.

URI 템플릿 파서 질문과 답변

URI 템플릿의 중괄호를 퍼센트 인코딩해야 하나요?

표현식 중괄호는 그대로 두세요. /users/{id}는 변수를 포함하지만 /users/%7Bid%7D는 인코딩된 리터럴이어서 치환되지 않습니다. 템플릿 전체를 먼저 URL 인코딩하지 말고 값의 인코딩을 연산자에 맡기세요.

RFC 6570에서 / 연산자와 다른 접두사는 어떻게 다른가요?

/는 정의된 변수 앞에 슬래시를 추가하고 목록에 *가 있으면 항목마다 추가합니다. 일반 확장은 값 안의 슬래시를 인코딩합니다. +는 슬래시를 보존하지만 별도 슬래시를 넣지는 않습니다.

RFC 6570에서 선택적 매개변수를 공백으로 구분할 수 있나요?

임의의 선택적 공백 구분자를 지정하는 연산자는 없습니다. 필요한 단어를 한 문자열로 준비하면 그 안의 공백은 %20으로 확장됩니다. 목록의 *는 /나 &처럼 해당 연산자가 정한 구분자를 사용합니다.

정규식으로 RFC 6570 URI 템플릿을 검증할 수 있나요?

정규식만으로 변수 값의 타입까지 확인할 수는 없습니다. {items:3}은 문법상 맞아도 items가 목록이면 접두부를 적용할 수 없습니다. 이 도구는 표현식과 변수 JSON을 함께 검사하고 실패 위치를 표시합니다.

URI 템플릿으로 URI와 라우트를 매칭할 수 있나요?

RFC 6570은 변수에서 URI로 확장하는 방향을 정의합니다. 여러 변수나 예약 문자, 펼친 맵이 있으면 원래 값을 유일하게 복원하지 못할 수 있습니다. 이 페이지에서는 URI에서 라우트 변수를 추출하지 않습니다.

문제가 있나요?

URI 템플릿 파서에 실제 값을 넣어 보세요

경로와 쿼리 예제에 변수 객체를 넣고 표현식별 결과를 확인한 다음 보고서를 저장하세요.

템플릿 하나와 변수 객체 하나를 표현식별로 확인합니다.