1. 程式人生 > >Swift3.0服務端開發(一) 完整示例概述及Perfect環境搭建與配置(服務端+iOS端)

Swift3.0服務端開發(一) 完整示例概述及Perfect環境搭建與配置(服務端+iOS端)

本篇部落格算是一個開頭,接下來會持續更新使用Swift3.0開發服務端相關的部落格。當然,我們使用目前使用Swift開發服務端較為成熟的框架Perfect來實現。Perfect框架是加拿大一個創業團隊開發的,目前是Perfect2.0版本,關於Perfect框架,下方會詳細的介紹。本篇部落格會演示一個完整的Demo, 該Demo完全由Swift3.0開發,其中包括服務端和iOS客戶端,資料庫採用的是MySQL

進一步說,本篇部落格將會演示一個使用Swift3.0開發的記事本,當然該記事本的服務端和iOS端都是使用Swift 3.0開發的。該記事本包括登入,註冊,新增筆記,更新筆記,刪除筆記以及查詢筆記,簡單的說就是對筆記的CURD操作。本篇部落格算是Swift3.0服務端開發系列部落格的開始,我們先通過今天這篇部落格整體的看一下Perfect框架可以做的事情,然後一步一步的開發出一個完整的專案。

本篇部落格先對Perfect框架進行了簡單介紹,然後演示由Perfect開發的Demo, 最後給出相應Demo的部分技術實現。

一、Perfect框架簡介

Perfect框架是目前比較完善的Swift服務端框架之一,當然其他的還有Vapor等其他的開源框架,橫向的對比了一下,還是Perfect的功能全面一些,目前Perfect的最新版本是2.0,由加拿大一創業團隊開發並維護。Perfect框架也是開源的,在Github上可以找到相關的原始碼()。Perfect的官網地址:,官網上有相關的Demo以及使用文件,關鍵是其開發文件有中文版的,這一點還是比較好的,官方開發文件地址:。

  

因為Swift目前最新的版本是3.0,所以Perfect2.0只能在最新的Swift3.0版本上進行編譯

。當然Swift語言支援Linux,iOS和Mac OS,所以Perfect框架也可以在上述的三種系統中進行編譯。我們可以使用Perfect開發Web應用,API等服務端應用。更多關於Perfect框架的詳細內容,請移步於Github或者官網進行了解,在此就不做過多贅述了。

二、示例展示

接下來我們先來看一下使用Swift3.0開發的服務端和iOS端的小Demo。在部落格的開頭我們也提到過,我們要展示的Demo是一個簡單的筆記。包括登入、註冊、筆記的增刪改查等功能。我們的服務端和iOS客戶端都是使用Swift3.0來實現的,當然服務端就是使用的上述的Perfect框架。接下來我們整體的看一下Demo

的效果,後續的部落格會給出更為具體的實現方式。

1.Demo功能介紹

下方就是我們Demo執行的具體效果,首先輸入使用者名稱點選下一步,如果使用者已註冊,讓其輸入密碼登入。登入後進入筆記列表頁面,可以對相應的筆記進行增刪改查操作,具體做法如下所示。下圖左邊就是iOS客戶端執行的效果,右邊就是MySQL中的資料更新情況。

因為Demo的功能比較簡單,所以我們資料庫的表結構也是非常簡單的,user表中儲存的就是註冊使用者的資訊content表中儲存的就是筆記的相應資訊,在content中有一個外來鍵是userID, 每條內容通過userID外來鍵與相應的使用者想關聯。換句話說,contentId與userId是一對多的關係。關於該Demo的資料庫設計細節,後期會詳細的介紹。

  

2.示例的專案結構

下方就是服務端+iOS客戶端的目錄結構,當然專案比較簡單,沒怎麼分層。iOSClientForPerfect就是iOS客戶端工程,PerfectTemplate就是服務端的工程。這兩個Project位於同一個WorkSpace中。在PerfectTemplate中會有一些依賴的庫,Source資料夾下除了PerfectTemplate檔案中的內容外,其他的都是依賴包,這些依賴包可以通過Package.swift檔案進行配置。

  

下方是本工程中的Package.swift檔案中的內容,也就是本工程中所依賴的包。

  

3、伺服器log日誌記錄

從上述依賴的包中我們可以清楚的看到依賴了日誌過濾以及日誌寫入的包,如果你的服務端要支援相關的日誌記錄功能的話,那麼就需要新增上述的這兩個依賴包了。下方就是我們工程記錄的日誌檔案。主要記錄了本工程的請求和相應以及Sql執行的相關資訊,如下所示:

  

4.服務端API組織結構

下方就是本篇部落格所演示Demo的服務端API。資料傳輸的格式為JSON,iOS客戶端將會對伺服器端返回的JSON進行請求。全是POST請求,相應報文包括list,result以及errorMessage。list中儲存的就是從服務端獲取的相關資料,而result中儲存的是介面請求狀態,SUCCESS標誌著請求成功,FAILURE標誌著請求失敗。當請求失敗時,errorMessage會有相應的報文資訊。當然這種API是比較常規的的做法,當然在請求報文中,應該新增上公共報文的,公共報文中可以新增token等公共資訊,當然本Demo中沒有新增,下方是部分API

(1)、通過使用者名稱查詢使用者是否存在介面

請求方式:POST

請求地址:/queryUserInfoByUserName

請求引數:

  

響應報文:

  

(2)、使用者登入或者註冊介面

請求方式:POST

請求地址:/login,/register

請求引數:

  

響應報文:

  

 (3)、獲取相應使用者的筆記列表介面

請求方式:POST

請求地址:/contentList

請求引數:

  

 響應報文:

  

其他的就不一一的展示了。上述的Demo就先到這兒,等我們介紹完Perfect的基本知識後,再對上述的Demo的具體實現細節進行剖析。本篇部落格對上述Demo就不做過多贅述了。

三、Perfect框架的獲取和編譯

上面算是Perfect框架的引子, 接下來我正式的進入Perfect框架的主題。當然我們以Mac OS下的Perfect為準,如果你使用的是Linux系統,Perfect官網上有相關的配置過程,關於Linux下的Perfect在此就不做過多贅述了。

1.獲取Perfect框架的模板

 git clone https://github.com/PerfectlySoft/PerfectTemplate

 cd PerfectTemplate

 ls

  

2.編譯模板

PerfectTemplate目錄中有一個Package.swift檔案,其中可以指定工程的名稱以及工程所依賴的包。首先我們開啟Package.swift,指定我們工程的檔名。具體如下所示。

  

指定完工程名,接下來就該編譯我們的模板工程了,下方是編譯並執行上述工程的命令。因為首次編譯時需要從github上下載相關的依賴包,所以首次編譯的過程是比較漫長的,等待一段時間,編譯和執行的命令如下:

 編譯:swift build

 執行:.build/debug/ZeLuLiPerfectDemo

還是那句話,首次編譯的過程會比較慢,下方就是首次編譯是需要下載的各種依賴包,然後再進行編譯的過程:

   

編譯完成後,會提示你連結並執行的命令,如果執行該命令後,你的Perfect服務端的服務就啟動了,如下所示:

  

執行完畢後,我們就可以通過瀏覽器訪問我們的Perfect伺服器了。預設埠是8181,所以我們訪問的本機地址是localhost:8181。下方是訪問上述地址返回的具體資訊,如下所示:

  

我們可以在Source資料夾下的main.swift檔案中對我們的服務進行相關的配置,我們可以改一下埠和返回的內容:

   

重新編譯並執行,結果如下所示:

  

3.生成Xcode專案

編譯並執行成功後,我們可以使用Swift3.0自帶的包管理器,生成一個Xcode專案。下方就是生成的Xcode的Project檔案的命令

 swift package generate-xcodeproj

執行上面的命令就會生成相應的xcodeproj檔案,我們就可以使用Xcode來管理我們的專案了。因為Project框架僅支援Swift3.0, 所以我們需要使用Xcode8.0+版本來開啟生成的xcodeproj檔案。如下:

  

你就可以開啟上面生成的xcodeproj檔案了,可以通過Xcode來編譯和執行我們的Perfect專案,當然要選擇Mac執行。執行完畢後,我們的服務就啟動了,就可以在瀏覽器中進行訪問了,如下所示:

  

本篇部落格就先到這兒,下篇部落格仍然會對Project框架進行介紹,在使用該框架時,我們還會涉及一些Perfect框架的部分原始碼的解析。

Perfect完整Demo的github分享地址為:  ,在以後的部落格中,我們會陸續的對該Demo的具體實現細節進行講解,本篇部落格算是一個Perfect框架的概述。