Human Cyborg Relations
Human Cyborg Relations

Reputation: 1244

Cannot GET (Passed url as parameter)

Can routes in express not take a full URL as a parameter?

For example,

router.get("/new/:url", <some function>);

gives me the Cannot GET error when the :url is https://www.google.com

Upvotes: 1

Views: 98

Answers (3)

Denis Besic
Denis Besic

Reputation: 3147

You should encode url parameter before sending. Your example encoded would be Http%3A%2F%2Fwww.google.com. On server side you can decode parameter to get value from before.

Upvotes: 1

Arif Khan
Arif Khan

Reputation: 5069

I think you are not much aware about ExpressJS routing because your url https://www.google.com have // which is used route separation.

In you case, we know that ExpressJS support regex route. I think following regex will work for you

app.get("/new/:protocol(http:|https:|ftp:)?/?/:url", <some function>);

In above case, you have bunded with limited protocol http, https and ftp. You may add more protocol by using | separator( or condition) and even you don't know what would be protocol then you like following

app.get("/new/:protocol?/?/:url", <some function>);

In above both route, ? means option that routes works file for

and in your function, you may append protocol in url like

function newUrl(req, res) {
    if(req.params.protocol)
        req.params.url = req.params.protocol + '//' + req.params.url;
    console.log(req.params.url);
}

Upvotes: 0

abdulbari
abdulbari

Reputation: 6242

You can't get full URL like this format.This type of format is used to take parameters send by client

 router.get("/new/:url", <some function>);
    //you can get url as params
    req.params.url//Use your URL

Upvotes: 1

Related Questions