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

本篇博客算是一個開頭,接下來會持續更新使用Swift3.0開發服務端相關的博客。固然,咱們使用目前使用Swift開發服務端較爲成熟的框架Perfect來實現。Perfect框架是加拿大一個創業團隊開發的,目前是Perfect2.0版本,關於Perfect框架,下方會詳細的介紹。本篇博客會演示一個完整的Demo, 該Demo徹底由Swift3.0開發,其中包括服務端和iOS客戶端,數據庫採用的是MySQLhtml

進一步說,本篇博客將會演示一個使用Swift3.0開發的記事本,固然該記事本的服務端和iOS端都是使用Swift 3.0開發的。該記事本包括登陸,註冊,添加筆記,更新筆記,刪除筆記以及查詢筆記,簡單的說就是對筆記的CURD操做。本篇博客算是Swift3.0服務端開發系列博客的開始,咱們先經過今天這篇博客總體的看一下Perfect框架能夠作的事情,而後一步一步的開發出一個完整的項目。git

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

 

1、Perfect框架簡介數據庫

Perfect框架是目前比較完善的Swift服務端框架之一,固然其餘的還有Vapor等其餘的開源框架,橫向的對比了一下,仍是Perfect的功能全面一些,目前Perfect的最新版本是2.0,由加拿大一創業團隊開發並維護。Perfect框架也是開源的,在Github上能夠找到相關的源代碼(Perfect-Github地址:https://github.com/PerfectlySoft/Perfect)。Perfect的官網地址:https://www.perfect.org/,官網上有相關的Demo以及使用文檔,關鍵是其開發文檔有中文版的,這一點仍是比較好的,官方開發文檔地址:https://www.perfect.org/docs/index_zh_CN.htmlswift

  

由於Swift目前最新的版本是3.0,因此Perfect2.0只能在最新的Swift3.0版本上進行編譯。固然Swift語言支持Linux,iOS和Mac OS,因此Perfect框架也能夠在上述的三種系統中進行編譯。咱們可使用Perfect開發Web應用,API等服務端應用。更多關於Perfect框架的詳細內容,請移步於Github或者官網進行了解,在此就不作過多贅述了。xcode

 

2、示例展現瀏覽器

接下來咱們先來看一下使用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文件中的內容,也就是本工程中所依賴的包。

  

 

三、服務器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就不作過多贅述了。

 

 

3、Perfect框架的獲取和編譯

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

 

1.獲取Perfect框架的模板

首先咱們從Github上Clone一份Perfect框架的模板(PerfectTemplate:https://github.com/PerfectlySoft/PerfectTemplate)。具體執行命令以及執行結果以下所示:

 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分享地址爲: https://github.com/lizelu/PerfectDemo ,在之後的博客中,咱們會陸續的對該Demo的具體實現細節進行講解,本篇博客算是一個Perfect框架的概述。 

相關文章
相關標籤/搜索