vapor学习教程-Basic Routing

2017-04-06  本文已影响0人  晓蜻蜓

Basic Routing

路由是这个web框架至关重要的部分,路由器决定哪些请求获得哪些响应。
Vapor具有大量的路由功能,包括路由构建器,组和集合。本节中,将介绍路由的基础知识。


Register

最基本的路由包含方法,路径和关闭。

drop.get("welcome") { request in
    return "Hello"
}

有效的标准HTTP方法包含有:get, post, put, patch, delete, and options.

drop.post("form") { request in
    return "Submitted with a POST request"
}

也可以使用any来匹配所有方法。

Nesting

要嵌套路径(/在URL中添加s),只需添加逗号。

drop.get("foo", "bar", "baz") { request in
    return "You requested /foo/bar/baz"
}

也可以使用/,但通过类型安全路由逗号通常比较容易输入并工作得更好

Alternate

接受一个Method作为第一个参数的备用语法也是可用的。

drop.add(.trace, "welcome") { request in
    return "Hello"
}

如果要动态注册路由或使用较不常用的方法,这可能很有用。

Request

每个路由关闭被赋予单个请求,这包含与导致路由关闭被调用的请求相关联的所有数据。

Response Representable

路由关闭可以通过三种方式返回:


Response

可以返回自定义响应。

drop.get("vapor") { request in
    return Response(redirect: "http://vapor.codes")
}

这对于创建特殊响应(如重定向)非常有用。对于要向响应中添加Cookie或其他项目的情况也是有用的。

ResponseRepresentable

正如在前面的例子中看到的,String可以在路由关闭中返回。这是因为它们符合ResponseRepresentable
Vapor中的很多类型默认符合此协议:

drop.get("json") { request in
    return try JSON(node: [
        "number": 123,
        "text": "unicorns",
        "bool": false
    ])
}

想了解更多node,请阅读有关Node更多信息

Throwing

若无法返回,则抛出throw符合任何对象的错误Errorvapor带有默认错误枚举Abort

drop.get("404") { request in
    throw Abort.notFound
}

通过使用Abort可以自定义这些错误的信息

drop.get("error") { request in
    throw Abort.custom(status: .badRequest, message: "Sorry 😱")
}

这些错误默认情况下被捕获AbortMiddleware,如下所示的Json响应中:

{
    error: true,
    message: "<the message>"
}

如果要覆盖此行为,请将AbortMiddlewareDroplet中间件中删除并添加自己的中间件。

Fallback


回调路由允许匹配多层嵌套斜杠。

app.get("anything", "*") { request in
   return "Matches anything after /anything"
}

例如,上述路由符合以下所有条件:


继续学习vapor学习教程-目录

上一篇 下一篇

猜你喜欢

热点阅读