基于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问题一样可以查看前面的文章(复制黏贴别人的😝,福建文档写的最烂的男人是也!).

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,997评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,603评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,359评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,309评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,346评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,258评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,122评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,970评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,403评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,596评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,769评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,464评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,075评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,705评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,848评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,831评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,678评论 2 354

推荐阅读更多精彩内容

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