Vapor网络框架的代码设计模式是遵循MVC的,新建文件的时候,你需要把它放进对应的文件夹,不然 vapor build
的时候会提示错误,看它的代码文件结构:
1 | // M |
1 | // V |
1 | // C |
Model
新建的数据模型类需要继承自 Fluent
框架里面的 Model
类,一方面是方便 JSON
数据的转化,另一方面是方便与数据库连接操作。
继承自 Model
的类需要注意以下几点:
- 必须添加一个
id
成员变量:var id:Node?
- 必须实现以下2个方法:
1
2
3init(node: Node, in context: Context)
func makeNode(context: Context) - 必须实现协议
Preparation
里面的2个方法,是用于做数据库操作的,如果不需进行数据库操作,直接空实现就可以了:1
2
3func prepare(_ database: Database)
func revert(_ database: Database)
View
视图文件存放在文件夹 Resources
的 View
子文件夹内,它可以是 html
文件,也可以是标签型语言的文件,模板项目里面的视图文件则是 leaf
后缀的。
视图文件写好之后,则可以通过 drop.view.make()
函数访问,例如:
1 | drop.get("html") { request in |
Controller
控制器主要是方便代码解耦,把不同的业务逻辑放到不同的控制器里面。
一个简单的控制器可以像下面那样:
1 | final class HelloController { |
然后在 main.swift
声明以上控制器方法:
1 | let hc = HelloController(); |
这样运行项目就可以通过 http://{host}/hello
访问到 sayHello
方法了。