troch / path-parser

A small utility to parse paths.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Path.test fails to match when query params are omitted

enochcheung opened this issue · comments

When query parameters are specified in the path pattern, it does not match paths that omit all query parameters

import { Path } from 'path-parser';

const path = new Path('/foo?:bar');

// Returns {bar: 1} as expected
console.log(path.test('/foo?bar=1'));

// Fails to match, returns null. I expect this to return {foo: undefined}
console.log(path.test('/foo'));

Seems like the reason this is happening is that the full path is passed into search-string for query param parsing (

const queryParams = parseQueryParams(path, options.queryParams)
). For path /foo, search-string will try to interpret /foo as a query param key, and end up returning {'/foo': null}. This causes path matching to fail, because /foo is an unexpected key