如何在路由时在请求中传递参数(使用 Vapor 的服务器端 Swift)

Imt*_*ath 4 swift vapor server-side-swift

我正在 Swift 中使用 Vapor 框架编写一个 Web 服务。

在我的应用程序中,我有用户模型。以下是我如何为所有用户路由获取请求。

router.get("users") { request in
    return User.query(on: request).all()
}
Run Code Online (Sandbox Code Playgroud)

在本地运行服务器后,为了获取用户,我可以发出如下请求localhost:8080/users

现在,我想向请求添加参数以使用户超过给定年龄。该请求看起来像localhost:8080/users?above_age=25

如何使用Vapor框架在请求中添加参数?我尝试使用可用的文档,但我无法弄清楚。

由于我现在开始使用 Vapor 进行服务器端 Swift,因此对使用 Vapor 3 的资源的任何引用也将对我可能遇到的其他问题有所帮助。谢谢!

Imt*_*ath 5

查询字符串参数将位于查询容器中,因此可以像下面这样访问它们。

router.get("users") { request -> Future<[User]> in
    if let minimumAge = request.query[Int.self, at: "above_age"] {
        return User.query(on: request).filter(\.age > minimumAge).all()
    }
    return User.query(on: request).all()
}
Run Code Online (Sandbox Code Playgroud)

如果请求将above_age作为查询参数,路由器将返回高于该年龄的用户列表,否则它将返回所有用户。