En gros, j'essaye de créer un raccourcisseur d'URL. Donc, vous entrez une URL et vous obtenez une version raccourcie. Je fais donc example.com/generate/InsertUrlHere
. Cependant, si je fais quelque chose comme example.com/generate/InsertUrl/Here
cela ne fonctionne pas.
Actuellement, j'ai
app.get('/generate/:string/:string2', async (req, res) => { res.send(req.params.string+'/'req.params.string2) })
Maintenant, je sais que le code ci-dessus ne prend qu'une seule entrée, mais dans une URL que je peux avoir n'importe où à partir de l'ancien google.com
à quelque chose comme google.com/1/2/3/4/5/6/7
.
Il existe donc une autre façon de procéder autre que
app.get('/generate/:string', async (req, res) => { res.send(req.params.string) })
3 Réponses :
Pourquoi n’envoyez-vous pas une URL codée afin qu’il n’y ait pas d’occurrence de /
qui cause le problème de détection de votre point de terminaison?
Utilisez encodeURIComponent () pour l'encoder ainsi il remplacerait certains caractères par des caractères d'échappement, puis le décoderait pour une utilisation en utilisant decodeURIComponent ()
Sachez où exactement pourrais-je mettre ça?
Eh bien, vous devez encoder l'URL à partir de l'endroit où l'API est appelée (par exemple, Frontend) et la décoder dans le gestionnaire de l'API afin de pouvoir récupérer l'URL d'origine à raccourcir.
Vous pouvez utiliser regex pour obtenir de nombreuses chaînes comme vous le souhaitez quelque chose comme
Route: /generate/:strings(*) Path: /generate/string1/string2/string3/string4 Key: strings, Value: string1/string2/string3/string4
Ensuite, vous pouvez utiliser "/" comme délimiteur afin d'obtenir chaque chaîne dans un tableau p>
@RodrigoRuiz Cela ne pose-t-il pas problème si OP a un autre point de terminaison d'API comme / generate /: strings (*) / validate
ou quelque chose?
app.get('/generate/:urlToShorten(*)', (req, res, next) => { console.log(req.originalUrl); console.log(req.params.urlToShorten); }); when calling https://localhost:3000/generate/https://google.com req.originalUrl: /generate/https://google.comurlToShorten: https://google.com