方法
和普通类不同的是Controllers的方法都应该接受一个Request
参数并返回一个ResponseEncodable
。
eg.
import Vapor
final class HelloController {
func greet(_ req: Request) throws -> String {
return "Hello!"
}
}
要使用这个Controller,只需要初始化它并传给router.
let helloController = HelloController()
router.get("greet", use: helloController.greet)
服务
如果想在controllers内使用你创建的服务,在路由闭包中使用Request
作为容器去创建这些服务。如下面的示例代码,在处理greet请求的时候通过Request
去创建了BCryptHasher
服务。
Vapor会自动缓存这些服务。
import Crypto
final class HelloController {
func greet(_ req: Request) throws -> String {
return try req.make(BCryptDigest.self).hash("hello")
}
}
网友评论