1
votes

Node.js express récupère tout après /

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)  
})


0 commentaires

3 Réponses :


0
votes

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 ()


2 commentaires

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.



1
votes

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>


1 commentaires

@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?



0
votes
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

0 commentaires