如何传递url参数来路由?

问题描述:

我添加到project.All工作正确的路由,但如果我发送正常的网址作为第一参数它不正确的工作。如何传递url参数来路由?

Get["/{url}/{digit}" 

如果我发送这个参数到服务器 - 所有工作正常。

localhost:8888/google.com/2 

但是,如果我发送参数与http://www它不起作用。

localhost:8888/https://www.google.com/2 

如何正确传递url参数路由?我认为这是因为Nancy认为我发送3输入参数。

如果您确实需要使用GET而不是POST,请尝试HttpUtility.UrlEncode("https://google.com/2")以urlencode您的网址。

+0

如何改变路线? –

+0

您是否尝试过类似'“/ {url}/{digit}/{digit2}”'? –

你必须编码您的网址是发送一个paramater:
用途:

var encodedString = Uri.EscapeDataString("https://www.google.com/2"); 

那么你的URL看起来是这样,它不应该得到任何错误:

HTTPS%3A%2F%2Fwww.google.com%2F2

发送请求:

本地主机:8888/HTTPS%3A%2F%2Fwww.google.com%2F2

或OU可以使用

HttpUtility.UrlEncode(); 

方法。欲了解更多信息,请看this

+0

我想改变路线 –

+0

我试试。没有工作 –

既然你坚持只改变后端,你可以尝试使用正则表达式捕捉到你的路线

Get["^(?<url>.*<digit>[0-9]+)$"] 

这应该与用于至少一个数字结尾的网址,并把一切都让它在URL像这样:

Get["^(?<url>.*<digit>[0-9]+)$"] = parameters => 
    { 
     var url = parameters.url; 
     var digit = parameters.digit; 
    }; 

我目前无法验证,如果这个工程,你想让它虽然,以确保你可以调整这个自己一定要看看怎么写正则表达式