为什么在URL中处理Vapor GET请求

时间:2017-09-12 23:24:55

标签: swift vapor

我正在创建一个Vapor服务器,但是当没有按下enter时,它正在处理URL中的GET请求。请参阅下面的示例:

假设我有代码get('hello'),无论何时输入,它都会以json格式返回hello world。

如果我要运行Vapor服务器,请键入localhost:8080/hello,然后在我的浏览器中按Enter键,它将返回{"hello":"world"},它按预期工作。在控制台上,它将打印GET /hello,它按预期工作。但是,如果我要从URL清除hello,我会localhost:8080/输出为空,将GET /打印到控制台。如果我要将h追加到localhost:8080/h,则该网址将自动填充到localhost:8080/hello,因为我之前输入了它,将GET /hello打印到控制台,然后我按下了输入URL。

每当我在URL中输入文本时,它都会向Vapor服务器发送请求并处理请求 - 即使我没有按Enter键发送请求。

为什么这样做,以及如何防止这种情况?

1 个答案:

答案 0 :(得分:2)

Safari(可能还有其他一些浏览器)使用预取功能。请参阅Safari首选项的“搜索”部分中的“在后台预加载热门命中”。如果启用,您的浏览器将在不同时间发送GET个请求,而您甚至不知道它。

您无法在广阔的世界中阻止此行为,因此您需要为此进行规划。 GET个端点不应该执行任何重要工作,也不应更改任何模型状态。将这些类型的端点置于动词POST之后。

相关问题