如何传递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您的网址。
你必须编码您的网址是发送一个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。
我想改变路线 –
我试试。没有工作 –
既然你坚持只改变后端,你可以尝试使用正则表达式捕捉到你的路线
Get["^(?<url>.*<digit>[0-9]+)$"]
这应该与用于至少一个数字结尾的网址,并把一切都让它在URL像这样:
Get["^(?<url>.*<digit>[0-9]+)$"] = parameters =>
{
var url = parameters.url;
var digit = parameters.digit;
};
我目前无法验证,如果这个工程,你想让它虽然,以确保你可以调整这个自己一定要看看怎么写正则表达式
如何改变路线? –
您是否尝试过类似'“/ {url}/{digit}/{digit2}”'? –