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 開發一同搞,有興趣的可以關注下。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容