Vapor3写后端-初体验

Vapor3写后端-初体验_第1张图片

之前的文章

  1. 使用Swift4+Vapor写后端-初体验
  2. 使用Swift4+Vapor写后端-部署heroku服务器
  3. 使用Swift4+Vapor写后端-Droplet和Route
  4. 使用Swift4+Vapor写后端-示例&套路
  5. 使用Swift4+Vapor写后端-总结

以上使用的是vapor2

前言

由于 Apple 发布了事件驱动的非阻塞网络框架 SwiftNIO 的缘故,Vapor 3 以迅雷不及掩耳盗铃当之势将其接入,导致 Vapor 2 和 Vapor 3 的语法差异很大。

创建项目

我们使用vapor new helloVapor创建一个名为helloVapor的空项目,vapor默认创建的模板项目中已经为我们写了一些初始化代码。项目结构如下:

.
├── Public
├── Sources
│   ├── App
│   │   ├── Controllers
│   │   ├── Models
│   │   ├── boot.swift
│   │   ├── configure.swift
│   │   └── routes.swift
│   └── Run
│       └── main.swift
├── Tests
│   └── AppTests
└── Package.swift

App

这是应用程序中最重要的文件夹,它是所有应用程序逻辑的所在。

Controllers

控制器是将应用逻辑分组在一起的好方式。大多数控制器具有许多功能,接受请求并返回某种响应。

Models

模型文件夹用来存放模型文件。

boot.swift

此文件包含一个函数,该函数将在应用程序启动后调用。我们可以在访问这里的应用程序,也可以使用该应用程序来创建可能需要的任何服务。

configure.swift

此文件包含一个函数,该函数接收应用程序的配置、环境和服务作为输入参数。在这里来改变应用的配置或注册服务。

routes.swift

在这里创建路由。

项目初体验

与vapor2中的Droplet不同,vapor3使用Application作为一个服务容器,它负责注册路由,启动服务器,中间件 (middleware)等等。如示例代码app.swift中:

public func app(_ env: Environment) throws -> Application {
    var config = Config.default()
    var env = env
    var services = Services.default()
    try configure(&config, &env, &services)
    let app = try Application(config: config, environment: env, services: services)
    try boot(app)
    return app
}

main.swift中调用了该方法初始化了一个Application,然后调用其run方法启动服务。
其中try configure(&config, &env, &services)这里调用了configure.swift文件中的public func configure(_ config: inout Config, _ env: inout Environment, _ services: inout Services) throws方法,用来注册服务、路由、中间层,并配置数据库和模型。具体内容见项目的示例代码,这里不再赘述。

运行

使用vapor run或者vapor xcode创建xcode项目并选择runtarget来运行项目。
控制台打印 Server starting on http://localhost:8080 项目运行成功,然后我们调用一下默认的接口,在浏览器中输入http://localhost:8080/hello,会看到返回的字符串:Hello, world!
接下来可以尝试自己写一些简单的get/post请求。

参考

vpaor文档

你可能感兴趣的:(Vapor3写后端-初体验)