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

标签 swift vapor

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

假设我有代码 get('hello') ,每当输入它时,它都会在 json 中返回 hello world格式。

如果我要运行 Vapor 服务器,请输入 localhost:8080/hello ,然后在浏览器中按回车键,它将返回 {"hello":"world"} ,按预期工作。在控制台上,它将打印 GET /hello ,按预期工作。但是,如果我要从 URL 中清除 hello,我会得到 localhost:8080/输出将为空,打印 GET /到控制台。如果我将 h 附加到此: localhost:8080/h ,那么 URL 将自动补全为 localhost:8080/hello因为我输入较早,打印 GET /hello在我按下 URL 中的 Enter 键之前,到控制台。

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

为什么要这样做,如何防止这种情况发生?

最佳答案

Safari(可能还有其他一些浏览器)使用预取功能。请参阅 Safari 偏好设置的“搜索”部分中的“在后台预加载热门命中”。如果启用,您的浏览器将在您不知情的情况下多次发送 GET 请求。

您无法在广阔的世界中阻止这种行为,因此您需要为此做好计划。 GET 端点不应执行任何重要工作,或更改任何模型状态。将这些类型的端点放在诸如 POST 之类的动词后面。

关于swift - 为什么在 URL 中处理 Vapor GET 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46186649/

相关文章:

swift - 为什么速记参数名称 $0 返回所有参数的元组?

ios - 具有滚动功能的大量文本的 UIAlertController?

linux - 随机字母数字字符串 Linux Swift 3

swift - 是否可以在 Swift 2.2 中使用 Vapor Web 框架?

swift - 使用vapor在Swift中创建REST API无法发出POST请求

objective-c - 在 NSString 的一部分周围绘制方框

swift - 私有(private) IBOutlets Swift

swift - 调用中的无关参数标签 'path:'

swift - Vapor - 从 HTML 获取模型

swift - 打开 Package.swift 和使用 `swift package generate-xcodeproj` 然后打开生成的 xcodeproj 文件有什么区别?