По сути, я пытаюсь сделать сокращатель URL. Таким образом, вы вводите URL-адрес и получаете сокращенную версию. Так что я делаю example.com/generate/InsertUrlHere. Однако, если я сделаю что-то вроде example.com/generate/InsertUrl/Here, это не сработает.
В настоящее время у меня есть
app.get('/generate/:string', async (req, res) => {
res.send(req.params.string)
})
Теперь я знаю, что приведенный выше код принимает только 1 ввод, но в URL-адресе у меня может быть что угодно, от простого старого google.com до чего-то вроде google.com/1/2/3/4/5/6/7.
Так есть ли другой способ сделать это, кроме
app.get('/generate/:string/:string2', async (req, res) => {
res.send(req.params.string+'/'req.params.string2)
})





Почему бы вам не отправить закодированный URL-адрес, чтобы в нем не было появления /, что вызывает проблему при обнаружении вашей конечной точки.
Используйте кодироватьURIкомпонент() для его кодирования, чтобы он заменял определенные символы escape-символами, а затем декодировал их для использования с использованием декодироватьURIкомпонент().
Ну, вы должны закодировать URL-адрес из любого места, где вызывается API (например, Frontend), и декодировать его внутри обработчика API, чтобы вы могли вернуть исходный URL-адрес для сокращения.
Вы можете использовать регулярное выражение, чтобы получить много строк, как вам нравится что-то вроде
Route: /generate/:strings(*)
Path: /generate/string1/string2/string3/string4
Key: strings, Value: string1/string2/string3/string4
Затем вы можете использовать «/» в качестве разделителя, чтобы получить каждую строку в массиве.
@RodrigoRuiz Разве это не вызывает проблемы, если у OP есть другая конечная точка API, такая как /generate/:strings(*)/validate или что-то в этом роде?
app.get('/generate/:urlToShorten(*)', (req, res, next) => {
console.info(req.originalUrl);
console.info(req.params.urlToShorten);
});
при вызове https://локальный:3000/генерировать/https://google.com
req.originalUrl: /generate/https://google.com
urlToShorten: https://google.com
Знаешь, куда именно я бы это поместил?