如何将网址附加为查询参数值

时间:2016-09-16 19:44:43

标签: url-routing elixir phoenix-framework query-parameters

我的网站有一个搜索表单,有人可以搜索以http://开头的网址,如下所示:

https://www.google.com

然后应编码并附加为查询参数值,如下所示:

localhost:4000/api/https%3A%2F%2Fwww.google.com

当我在本地运行它(上图)时,它可以,但在部署时(下方):

https://api.mysite.com/search/api/https%3A%2F%2Fwww.google.com%2F

=>返回404。

如果我输入:

http://localhost:4000/api/https://www.google.com

我收到此错误:

Phoenix.Router.NoRouteError at GET /api/v1/https://www.google.com
no route found for GET /api/v1/https:/www.google.com (ExternalPing.Router)

我不确定这些是否相关。将url作为查询参数值附加的正确方法是什么?

我已经尝试使用URI.encode和URI.encode_www_form进行编码,但是他们没有解决这个问题

1 个答案:

答案 0 :(得分:0)

现在你还没有发布你的服务器代码,所以我将在这里假设。

我认为问题在于你没有对第二个字符串进行编码,因为它在你的网址中包含/你有问题。

网址是: http://localhost:4000/api/https://www.google.com

服务器会解释错误。所以你要求的路线叫做:

/api/https:/

使用名为/www.google.com

的参数

您需要对查询字符串进行编码。

但这又猜测了,因为我不知道你的服务器是怎么看的。

我只是尝试使用未编码的url作为参数调用我的iis服务器上的端点,这就是它给了我的回复:

<Error>
    <Message>The request is invalid.</Message>
</Error>