Firefox 44+, Opera 36+, Edge 17+, Safari 10.3+ и Chrome 49+ поддерживают API URLSearchParams :
Для стабильных версий IE существует предложенная google-версия URLSearchParams polyfill .
Она не стандартизирована W3C , но это живой стандарт WhatWG .
Вы можете использовать его по месту, но вам нужно удалить вопросительный знак ?
(например, с помощью .slice(1)
):
let params = new URLSearchParams(location.search.slice(1));
или
let params = (new URL(location)).searchParams;
Или, конечно, по любому URL:
let url = new URL('https://example.com?foo=1&bar=2');
let params = new URLSearchParams(url.search.slice(1));
Вы можете получить параметры также с помощью сокращенного .searchParams
на объекте URL, например:
let params = new URL('https://example.com?foo=1&bar=2').searchParams;
params.get('foo'); // "1"
params.get('bar'); // "2"
Вы читаете / устанавливаете параметры через API get(KEY)
, set(KEY, VALUE)
, append(KEY, VALUE)
. Вы также можете перебирать все значения for (let p of params) {}
.
Для аудита и тестирования доступны [reference] [] и образец страницы .
В этом случае, вероятно, использование концепции экспресс-промежуточного программного обеспечения (вызов next()
) будет излишним.
Я бы подошел к этому, создав абстракцию для пути успеха. Рассмотрим что-то вроде этого:
const resWithSuccess = (req, res, data) => {
res.json({
data: data,
timestamp: new Date().toUTCString(),
// success: res.statusCode < 400, // --> actually you don't need this,
// since it will always be true
// status: res.statusCode // --> or whatever else "meta" info you need
});
};
Затем, как только вам нужно будет откликаться на успех, перейдите к нему:
exports.getTask = async function (req, res, next) {
// .... bla bla
if (task) {
resWithSuccess(tank);
}
};
PS: ... и вы можете использовать концепцию экспресс-промежуточного программного обеспечения (вызов next()
) для пути ошибки.
next(error)
выглядит в порядке. – Kaloyan Kosev 13 July 2018 в 20:00