Swift 后台开发 -- 初次体验

上一篇说了基于 vapor 的 Swift 后台开发的环境搭建,这里先不谈基础,也不说理论,先来实现一个简单的小功能:获取用户信息。这里使用的数据库是 MySQL,没有安装的自己去官网下载安装就可以了。

注意:vapor MySQL Provider 中支持 Json 格式,所以 MySQL 版本要在 5.7 或者以上,安装完成后可以顺手配置 MySQL 桌面工具什么,习惯在终端操作的直接无视。启动 MySQL 测试连接是否正常,再顺便新建个 Users 表方便后面测试:

create table users (
    uid varchar(100),
    username varchar(255),
    nickname varchar(255),
    PRIMARY KEY (uid)
);

insert into users values ('021020', 'deng', 'dengyonghao')

1.首先我们需要添加 MySQL Provider Package:

let package = Package(
    name: "IMServer",
    dependencies: [
        .Package(url: "https://github.com/vapor/vapor.git", majorVersion: 1, minor: 1),
        .Package(url: "https://github.com/vapor/mysql-provider.git", majorVersion: 1, minor: 0)
    ]
)

添加完成后,需要我们手动来更新下依赖包,不要执行 vapor clean 来清空,这样会把原来的依赖包全部删除再下载,如果网速比较慢就坑了,比如说我公司的网络,感觉github被和谐掉没有什么两样~~

swift package update

2.完成后 build 下,添加了mysql provider,需要加上 --mysql,配置 xcode 时也是同理:

vapor build --mysql
vapor xcode --mysql 

如果在这里你可以一次 build 成功,只能说你太幸运了,这样你可以直接跳过第3步看第4步,如果有兴趣也可以看下3步,说不定,以后就会用到嗯 _

3.如果在 build 出错了的话,直接 用 vapor xcode --mysql 进入到 xcode 里面调试,xcode 上调总比在终端上调看着舒服点~~~

1065328C-2835-4F01-82F4-B7A31456724A.png

这个主要是由于你本地的 MySQL 的相关 Lib 没有导出去,这个时候我们需要把我们本地的 MySQL 的实际 Lib 的路径导进到工程里面,如果发现 CMySQL 之类的错误,则表示 CMySQL 这个依赖包没有找到,需要手动去添加头文件的查找路径:

HEADER_SEARCH_PATHS = $(SRCROOT)/Packages/CMySQL-1.0.0
LIBRARY_SEARCH_PATHS = /usr/local/mysql-5.7.16-osx10.11-x86_64/lib

这里根据你实际的路径填写。

4.在 main.swift 中添加数据库操作代码:

import Vapor
import VaporMySQL

let drop = Droplet()

let mysql = try VaporMySQL.Provider(host: "localhost", user: "root", password: "密码", database: "数据库名")

drop.addProvider(mysql)

drop.get("userinfo") { req in
    let name = req.data["name"]
    if name == nil {
        return try JSON(node: [
            "error" : "error: user name is nil"
        ])
    }
    let result = try mysql.driver.mysql("select * from users where username='" + (name?.string)! + "';")
    let userinfo = result[0]
    return try JSON(node: userinfo)
}

drop.run()  

这里就不封装什么了,实际使用时这里应该对实体类和数据库操作进行封装的。

在 xcode 里面直接执行,然后在浏览器里查看结果:

90748DAF-A429-4F80-9002-73806E8A13E5.png

5.最后,我们再来分析下为什么步骤2里面会 build 失败,在 vapor toolbox 里面:

vapor build --mysql

相当于:

swift build -Xswiftc -I/usr/local/include/mysql -Xlinker -L/usr/local/lib

感觉是不是发现了什么, 对的, MySQL 的相关 Lib 没有链接过来,所以我们改下:

swift build -Xswiftc -I/usr/local/include/mysql -Xlinker -L/usr/local/lib -Xlinker -L/usr/local/mysql-5.7.16-osx10.11-x86_64/lib

把相关链接加进来我们就可以 build 成功了,看来有时候还是不能太过依赖于 vapor toolbox, 多分析下原因,这个东西我也折腾了挺久才知道原因。。。。

这里还有个没有解决的问题:

[DEPRECATED] Providers should implement the `boot(_: Droplet)` method to register dependencies. The `provided` property will be removed in a future update.
No command supplied, defaulting to serve...

这个过期声明要用什么来代替呢,看不太懂,有经验的求分享下。

最后,这篇文章主要还是体验下 vapor,想想当初用 SSH 来做信息系统时,各种烦人,初次体验 vapor 还是不错的,后面尝试下能不能通过 vapor 来搭建个 IM 后台,可以配合SDK 开发一同搞,有兴趣的可以关注下。

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

推荐阅读更多精彩内容