基于Perfect的Swift3.1服务器开发案例

PiaojinSwiftServergitHub地址

基于Perfect的Swift3.1服务器开发案例

开发环境 mac os,Xcode8.3,Swift3.1

建议先去https://www.perfect.org/docs/gettingStartedFromScratch_zh_CN.html
查阅官方文档在往下读

1.本项目数据库采用MySql所以必须先安装好MySql

2.main.swift文件中引入相关模块

import PerfectLib
import PerfectHTTP
import PerfectHTTPServer

3.创建一个路由Routes,我这边封装到一个自定义类中即相当于SpringMVC中的控制器,每个Routes相当于控制器中的处理请求的方法

import Foundation
import PerfectHTTP
/// 用于接受请求并根据请求创建响应内容的句柄函数格式。
public typealias RequestHandler = (HTTPRequest, HTTPResponse) -> ()
//创建一个类,类似springMVC中的控制器
public class MainController : NSObject{
    
    let testRequestHandler : RequestHandler = {
        (request : HTTPRequest, response : HTTPResponse)
        in
        response.setBody(string: "路由句柄已经收到,hello piaojin!")
        response.completed()
    }
    
    let testRequestHandler2 : RequestHandler = {
        (request : HTTPRequest, response : HTTPResponse)
        in
        response.setBody(string: "路由句柄已经收到,hello piaojin2!")
        response.completed()
    }
    
    //路由,用于处理一个请求
    public lazy var route : Routes = {
        var tempRoute : Routes = Routes()
        //add方法相当于添加一个拦截特定请求的方法
        tempRoute.add(method: .get, uri: "/testRoutes", handler:self.testRequestHandler)
        tempRoute.add(method: .get, uri: "/testRoutes2", handler:self.testRequestHandler2)
        return tempRoute
    }()
    
    public override init() {
        super.init()
    }
}

4.创建服务器,这块可以查阅官方文档

/// MARK: 第1步创建一个服务
// Create HTTP server.
let server = HTTPServer()

/// MARK: 第2步创建一个路由管理控制器相当于springMVC中的控制器(自定义,可以直接跳过,直接创建路由)
let controller : MainController = MainController()

/// MARK: 第3步在服务器上注册路由,路由的注册必须在服务器启动之前(server.start())
server.addRoutes(controller.route)

// Set a listen port of 8080
server.serverPort = 8080

// Set a document root.
// This is optional. If you do not want to serve static content then do not set this.
// Setting the document root will automatically add a static file handler for the route /**
server.documentRoot = "./webroot"

do {
    /// MARK: 第4步启动服务
    // Launch the HTTP server.
    try server.start()
    
} catch PerfectError.networkError(let err, let msg) {
    print("Network error thrown: \(err) \(msg)")
}

任何疑问发邮件:(804488815@qq.com)

备注:在编译的过程中很容易出错,个人建议使用命令行编译,链接再用Xcode打开运行,每次修改后如果是小修改可以直接Xcode编译运行,如果是大修改,例如:添加文件,引入其他模块最好用命令行编译,命令行编译可以去官方网站查阅,此处不做重复工作.如果Xcode编译时报错不知道哪里错误,还是得命令行在编译试试.需要注意Swift Package的管理方式,可以去http://www.jianshu.com/p/a5daea3ef144
查看,遇到the package has an unsupported layout问题一样可以查看前面的文章(复制黏贴别人的😝,福建文档写的最烂的男人是也!).

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 因为要结局swift3.0中引用snapKit的问题,看到一篇介绍Xcode8,swift3变化的文章,觉得很详细...
    uniapp阅读 4,512评论 0 12
  • 醉携伊人临绝峰, 笑语江山景不同。 孤日苍霞邀宾座, 瀚海云涛寄逍遥。 ————————————简云峪
    青山藏风阅读 549评论 1 4
  • 天色辽阔 白云穿过 是谁行走在山顶上 未经沧桑 神色慌张 是她初见这太阳
    不如须臾阅读 190评论 0 1
  • 每个人在成长的路上都不是那么的一帆风顺的,或多或少的坎坷,但是只要我们勇敢面对这些挫折,一定会有一天过去的...
    唯一的金子阅读 203评论 0 0