Vapor3开发指南: 入门 - Routing



  • 路由

    路由是用来查找 request 对应的 response。

    创建路由器

    Vapor中默认路由是 EngineRouter。你可以通过实现Router协议来实现自定义路由器。

    let router = try EngineRouter.default()
    

    通常这些是在 configure.swift 文件中完成的。

    注册路由

    假设当访问GET /users时,你想要返回user列表。不考虑授权问题的话,代码将类似这样的。

    router.get("users") { req in
        return // fetch the users
    }
    

    Vapor中路由通常使用 .get.put.post.patch.delete。你可以通过/来表示路径,也可以使用逗号还分割。我们推荐后者,因为它可读性更好。

    router.get("path", "to", "something") { ... }
    

    路由

    最佳存放路由的位置是 routes.swift 文件,可以使用传进来的路由器参数来注册你的路由。

    import Vapor
    
    public func routes(_ router: Router) throws {
        // Basic "Hello, world!" example
        router.get("hello") { req in
            return "Hello, world!"
        }
    
        /// ...
    }
    

    如果想了解更多关于返回值的内容,可参考 Getting Started → Content

    参数

    有时候你可能想要路由中某个路径是动态的。这通常是用于要获取一个元素的id,比如GET /users/:id

    router.get("users", Int.parameter) { req -> String in
        let id = try req.parameter(Int.self)
        return "requested id #\(id)"
    }
    

    这里传的不是字符串,而是你期望的参数类型。在这里User有个Int类型的 ID 。

    提示

    你也可以自定义参数类型。

    注册路由之后

    注册完路由后你必须注册这个路由器作为一个 Getting Started → Services


Log in to reply