天天看點

Swift3.0服務端開發(二) 靜态檔案添加、路由配置以及表單送出

今天部落格中就來聊一下Perfect架構的靜态檔案的添加與通路,路由的配置以及表單的送出。雖然官網上有聊靜态檔案的通路的部分,但是在使用Perfect架構來通路靜态檔案時還是有些點需要注意的,這些關鍵點在其官方文檔上并未提出。今天我們要做的事情就是通過浏覽器通路靜态檔案,然後在靜态檔案中使用form表單往指定的路由上進行送出相應的資料。

一、靜态檔案的添加與通路

1、未使用Xcode管理的Perfect的靜态檔案根目錄的配置

在PHP開發或者Java Web開發中,都有一個根目錄來存儲相應的靜态檔案,比如wwwroot, htdoc, webroot等等這些檔案。在使用Perfect開發伺服器端時,亦是如此,我們可以在Source目錄中的main.swift中對靜态檔案的根目錄進行配置,下方就是我們的配置代碼:

  

Swift3.0服務端開發(二) 靜态檔案添加、路由配置以及表單送出

配置完成後,如果我們的項目不是用Xcode進行管理的話,當我們對Perfect工程進行編譯和運作時,會在相應的模闆目錄下建立相應的靜态檔案的根目錄(webroot)。如下所示:

Swift3.0服務端開發(二) 靜态檔案添加、路由配置以及表單送出

在webroot中我們添加上相應的靜态檔案,我們就可以通過Perfect服務進行通路了,下方是我們在webroot中添加的index.html的内容,用浏覽器就可以通路了。下方就是我們比較簡單的index.html中的内容了,當然下方的html簡單的不能在簡單了,如下所示:

Swift3.0服務端開發(二) 靜态檔案添加、路由配置以及表單送出

在通路上述index.html檔案之前,我們需要将main.swift中添加的路由進行删除,下方選中的部分就是要删除的代碼。如果你不删除下方這段代碼的話,如果你通路localhost:8181的話,那麼就是下方路由所傳回的内容。修改完代碼後,要重新進行編譯運作才生效的,這一點與解釋性語言PHP是不同的。

Swift3.0服務端開發(二) 靜态檔案添加、路由配置以及表單送出

經過上述步驟後,我們就可以通過通路localhost:8181來加載我們的index.html檔案了,如下所示:

Swift3.0服務端開發(二) 靜态檔案添加、路由配置以及表單送出

2、Xcode管理下的Perfect的靜态檔案目錄

上述步驟是未使用Xcode管理Perfect項目的情況,webroot檔案夾就位于工程目錄下。當我們的Perfect工程使用Xcode進行管理後,webroot的位置就會被改變。下方就是調用swift的包管理器生成相應的xcodeproj檔案:

Swift3.0服務端開發(二) 靜态檔案添加、路由配置以及表單送出

如果你的項目目錄中有webroot目錄,也有index.html檔案。但是使用xcode進行Perfect項目管理後,就找不到下方這個index.html檔案了。也就是webroot的檔案目錄變地方了。這一點在官方文檔上是沒有介紹的。

    

Swift3.0服務端開發(二) 靜态檔案添加、路由配置以及表單送出

通過搜尋,我們可以找到Xcode管理下的Perfect項目中的webroot目錄,使用Xcode打開Perfect工程,找到Product,然後右鍵單擊,Show In Finder。

Swift3.0服務端開發(二) 靜态檔案添加、路由配置以及表單送出

我們會看到Xcode管理下的webroot目錄,如下所示。你可以将靜态檔案放到wwwroot中進行通路。

Swift3.0服務端開發(二) 靜态檔案添加、路由配置以及表單送出

當我們在此重新整理浏覽器時,就可以找到相應的index.html.

Swift3.0服務端開發(二) 靜态檔案添加、路由配置以及表單送出

二、路由配置

下方這段代碼就是main.swift中的代碼段,首先建立了一個HTTPServer()的對象,然後又建立了一個路由對象,接着又将這個路由對象添加到了服務對象上。具體代碼如下所示:

Swift3.0服務端開發(二) 靜态檔案添加、路由配置以及表單送出

1.添加靜态路由路徑

我們可以通過調用routes對象的add()方法為路由添加各種路徑,當然add()有好多重載的方法,不過其功能都是往路由上添加路徑、請求方法或者創立句柄。

Swift3.0服務端開發(二) 靜态檔案添加、路由配置以及表單送出

下方我們添加了一個“/login”的路由路徑,其請求方法是.get的方式。後方的尾随閉包是對響應的處理。具體代碼如下:

Swift3.0服務端開發(二) 靜态檔案添加、路由配置以及表單送出

重新編譯并運作我們的Perfect工程,然後通路localhost:8181/login路徑,會在浏覽器中看到下方的傳回資訊。其他的路由

Swift3.0服務端開發(二) 靜态檔案添加、路由配置以及表單送出

2、路由變量

在配置路由時,我們的路徑中可以添加路由變量來比對同一類型的url。下方就是Perfect架構中路由變量的使用。在URL中通過{key}的方式來插入路由變量。下方的uri中中間的{\(valueKey)}就是通過字元串插值的方式插入的路由變量的Key,我們可以通過這個key來擷取到相應的路由變量。

Swift3.0服務端開發(二) 靜态檔案添加、路由配置以及表單送出

下方就是我們通路上述路徑的結果:

Swift3.0服務端開發(二) 靜态檔案添加、路由配置以及表單送出

3、路由通配符

我們還可以在URI中使用通配符類比對路徑,使用*好來比對通用的路徑。下方就是路由通配符的使用方式:

Swift3.0服務端開發(二) 靜态檔案添加、路由配置以及表單送出

下方就是路由通配符是運作結果:

Swift3.0服務端開發(二) 靜态檔案添加、路由配置以及表單送出

4.結尾通配符

下方就是結尾通配符的使用方式,結尾處使用“**”來比對尾部所有符合規則的uri, 然後通過routeTrailingWildcardKey來擷取通配的内容。

Swift3.0服務端開發(二) 靜态檔案添加、路由配置以及表單送出

通路結果如下所示:

Swift3.0服務端開發(二) 靜态檔案添加、路由配置以及表單送出

上述這四種路由的優先級為:路由變量 > 靜态路由 > 通配符路徑 > 結尾通配符。官方文檔上還有如果配置路由表的版本的示例,在此就不做過多贅述了。

三、表單送出與Json傳回

聊完路由的配置,接下來我們要聊一下表單的送出與json資料的傳回。本部分内容我們首先使用form表單post送出的方式将資料送出到指定的路由并處理,處理完畢後再講處理的資料通過josn的資料格式傳回給用戶端。

1、建構form表單

首先我們得建立相應的表單送出的代碼,當然代碼比較簡單,就一個from表單。action的位址就是我們在伺服器端配置的路由位址“127.0.0.1:8181/login”,而表單送出的方式是POST。具體如下所示。

Swift3.0服務端開發(二) 靜态檔案添加、路由配置以及表單送出

2、擷取form表單參數

下方就是伺服器端擷取表單參數的代碼。首先我們添加了一個“/login”路由,路由的請求方式是.post。首先我們擷取請求的參數。因為form表單的請求參數名是“userName”和“password”,是以我們要使用這兩個name從request對象中擷取相應的值。擷取到值後你可以查詢資料庫或者其他一些操作呢。操作完畢後傳回相應的json資訊。Swift中的字典是可以調用jsonEncodeString()方法來轉換的,後邊的部落格會對部分Perfect架構的源碼進行解析,其中會涉及到如何将字典轉換成json串,在此就不做過多贅述了。

Swift3.0服務端開發(二) 靜态檔案添加、路由配置以及表單送出

3.表單送出與結果傳回

上面web頁和服務端都已實作完畢,接下來我們就開始測試了。下方就是相應的form表單與結果傳回:

   

Swift3.0服務端開發(二) 靜态檔案添加、路由配置以及表單送出

 本篇部落格就先到這兒,下篇部落格仍然會對Perfect架構的相關内容進行介紹。

作者:青玉伏案

出處:http://www.cnblogs.com/ludashi/

本文版權歸作者和共部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。

如果文中有什麼錯誤,歡迎指出。以免更多的人被誤導。

收履歷:某網際網路公司,招聘iOS/Android靠譜工程師,入職後,可内部聯系樓主,有小禮品贈送,有意者可郵箱投遞履歷:[email protected]