mirror of
https://github.com/kevin-DL/sapper.git
synced 2026-01-21 23:05:02 +00:00
decode query params
This commit is contained in:
@@ -67,7 +67,7 @@ function select_route(url: URL): Target {
|
|||||||
if (url.search.length > 0) {
|
if (url.search.length > 0) {
|
||||||
url.search.slice(1).split('&').forEach(searchParam => {
|
url.search.slice(1).split('&').forEach(searchParam => {
|
||||||
const [, key, value] = /([^=]+)=(.*)/.exec(searchParam);
|
const [, key, value] = /([^=]+)=(.*)/.exec(searchParam);
|
||||||
query[key] = value || true;
|
query[key] = value ? decodeURIComponent(value.replace(/\+/g, ' ')) : true;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return { url, path, page, match, query };
|
return { url, path, page, match, query };
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
<h1>{slug}</h1>
|
<h1>{slug} ({message})</h1>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
preload({ params }) {
|
preload({ params, query }) {
|
||||||
return {
|
return {
|
||||||
slug: params.slug
|
slug: params.slug,
|
||||||
|
message: query.message
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
<a href='credentials?creds=include'>credentials</a>
|
<a href='credentials?creds=include'>credentials</a>
|
||||||
<a rel=prefetch class='{page === "blog" ? "selected" : ""}' href='blog'>blog</a>
|
<a rel=prefetch class='{page === "blog" ? "selected" : ""}' href='blog'>blog</a>
|
||||||
<a href="const">const</a>
|
<a href="const">const</a>
|
||||||
<a href="echo/page/encöding">echo/page/encöding</a>
|
<a href="echo/page/encöded?message=hëllö+wörld">echo/page/encöded?message=hëllö+wörld</a>
|
||||||
|
|
||||||
<div class='hydrate-test'></div>
|
<div class='hydrate-test'></div>
|
||||||
|
|
||||||
|
|||||||
@@ -752,21 +752,21 @@ function run({ mode, basepath = '' }) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('encodes req.params for server-rendered pages', () => {
|
it('encodes req.params and req.query for server-rendered pages', () => {
|
||||||
return nightmare.goto(`${base}/echo/page/encöded`)
|
return nightmare.goto(`${base}/echo/page/encöded?message=hëllö+wörld`)
|
||||||
.page.title()
|
.page.title()
|
||||||
.then(title => {
|
.then(title => {
|
||||||
assert.equal(title, 'encöded');
|
assert.equal(title, 'encöded (hëllö wörld)');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('encodes req.params for client-rendered pages', () => {
|
it('encodes req.params and req.query for client-rendered pages', () => {
|
||||||
return nightmare.goto(base).init()
|
return nightmare.goto(base).init()
|
||||||
.click('a[href="echo/page/encöding"]')
|
.click('a[href="echo/page/encöded?message=hëllö+wörld"]')
|
||||||
.wait(100)
|
.wait(100)
|
||||||
.page.title()
|
.page.title()
|
||||||
.then(title => {
|
.then(title => {
|
||||||
assert.equal(title, 'encöding');
|
assert.equal(title, 'encöded (hëllö wörld)');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user