今天博客中就來聊一下Perfect框架的靜態(tài)文件的添加與訪問,路由的配置以及表單的提交。雖然官網(wǎng)上有聊靜態(tài)文件的訪問的部分,但是在使用Perfect框架來訪問靜態(tài)文件時(shí)還是有些點(diǎn)需要注意的,這些關(guān)鍵點(diǎn)在其官方文檔上并未提出。今天我們要做的事情就是通過瀏覽器訪問靜態(tài)文件,然后在靜態(tài)文件中使用form表單往指定的路由上進(jìn)行提交相應(yīng)的數(shù)據(jù)。

 

一、靜態(tài)文件的添加與訪問

1、未使用Xcode管理的Perfect的靜態(tài)文件根目錄的配置

在PHP開發(fā)或者Java Web開發(fā)中,都有一個(gè)根目錄來存儲(chǔ)相應(yīng)的靜態(tài)文件,比如wwwroot, htdoc, webroot等等這些文件。在使用Perfect開發(fā)服務(wù)器端時(shí),亦是如此,我們可以在Source目錄中的main.swift中對(duì)靜態(tài)文件的根目錄進(jìn)行配置,下方就是我們的配置代碼:

  photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

配置完成后,如果我們的項(xiàng)目不是用Xcode進(jìn)行管理的話,當(dāng)我們對(duì)Perfect工程進(jìn)行編譯和運(yùn)行時(shí),會(huì)在相應(yīng)的模板目錄下創(chuàng)建相應(yīng)的靜態(tài)文件的根目錄(webroot)。如下所示:

  photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

在webroot中我們添加上相應(yīng)的靜態(tài)文件,我們就可以通過Perfect服務(wù)進(jìn)行訪問了,下方是我們?cè)?span style="margin: 0px; padding: 0px; color: rgb(255, 0, 0);">webroot中添加的index.html的內(nèi)容,用瀏覽器就可以訪問了。下方就是我們比較簡(jiǎn)單的index.html中的內(nèi)容了,當(dāng)然下方的html簡(jiǎn)單的不能在簡(jiǎn)單了,如下所示:

  photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

在訪問上述index.html文件之前,我們需要將main.swift中添加的路由進(jìn)行刪除,下方選中的部分就是要?jiǎng)h除的代碼。如果你不刪除下方這段代碼的話,如果你訪問localhost:8181的話,那么就是下方路由所返回的內(nèi)容。修改完代碼后,要重新進(jìn)行編譯運(yùn)行才生效的,這一點(diǎn)與解釋性語言PHP是不同的。

  photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

經(jīng)過上述步驟后,我們就可以通過訪問localhost:8181來加載我們的index.html文件了,如下所示:

  photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

2、Xcode管理下的Perfect的靜態(tài)文件目錄

上述步驟是未使用Xcode管理Perfect項(xiàng)目的情況,webroot文件夾就位于工程目錄下。當(dāng)我們的Perfect工程使用Xcode進(jìn)行管理后,webroot的位置就會(huì)被改變。下方就是調(diào)用swift的包管理器生成相應(yīng)的xcodeproj文件:

  photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

如果你的項(xiàng)目目錄中有webroot目錄,也有index.html文件。但是使用xcode進(jìn)行Perfect項(xiàng)目管理后,就找不到下方這個(gè)index.html文件了。也就是webroot的文件目錄變地方了。這一點(diǎn)在官方文檔上是沒有介紹的。

    photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

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

  photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

我們會(huì)看到Xcode管理下的webroot目錄,如下所示。你可以將靜態(tài)文件放到wwwroot中進(jìn)行訪問。

  photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

當(dāng)我們?cè)诖怂⑿聻g覽器時(shí),就可以找到相應(yīng)的index.html.

  photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

 

二、路由配置

下方這段代碼就是main.swift中的代碼段,首先創(chuàng)建了一個(gè)HTTPServer()的對(duì)象,然后又創(chuàng)建了一個(gè)路由對(duì)象,接著又將這個(gè)路由對(duì)象添加到了服務(wù)對(duì)象上。具體代碼如下所示:

  photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

 

1.添加靜態(tài)路由路徑

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

  photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

 

下方我們添加了一個(gè)“/login”的路由路徑,其請(qǐng)求方法是.get的方式。后方的尾隨閉包是對(duì)響應(yīng)的處理。具體代碼如下:

  photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

重新編譯并運(yùn)行我們的Perfect工程,然后訪問localhost:8181/login路徑,會(huì)在瀏覽器中看到下方的返回信息。其他的路由

  photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

 

2、路由變量

在配置路由時(shí),我們的路徑中可以添加路由變量來匹配同一類型的url。下方就是Perfect框架中路由變量的使用。在URL中通過{key}的方式來插入路由變量。下方的uri中中間的{\(valueKey)}就是通過字符串插值的方式插入的路由變量的Key,我們可以通過這個(gè)key來獲取到相應(yīng)的路由變量。

  photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

下方就是我們?cè)L問上述路徑的結(jié)果:

  photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

 

3、路由通配符

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

  photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

下方就是路由通配符是運(yùn)行結(jié)果:

  photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

 

4.結(jié)尾通配符

下方就是結(jié)尾通配符的使用方式,結(jié)尾處使用“**”來匹配尾部所有符合規(guī)則的uri, 然后通過routeTrailingWildcardKey來獲取通配的內(nèi)容。

  photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

訪問結(jié)果如下所示:

  photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

上述這四種路由的優(yōu)先級(jí)為:路由變量 > 靜態(tài)路由 > 通配符路徑 > 結(jié)尾通配符。官方文檔上還有如果配置路由表的版本的示例,在此就不做過多贅述了。

 

三、表單提交與Json返回

聊完路由的配置,接下來我們要聊一下表單的提交與json數(shù)據(jù)的返回。本部分內(nèi)容我們首先使用form表單post提交的方式將數(shù)據(jù)提交到指定的路由并處理,處理完畢后再講處理的數(shù)據(jù)通過josn的數(shù)據(jù)格式返回給客戶端。

1、構(gòu)建form表單

首先我們得創(chuàng)建相應(yīng)的表單提交的代碼,當(dāng)然代碼比較簡(jiǎn)單,就一個(gè)from表單。action的地址就是我們?cè)诜?wù)器端配置的路由地址“127.0.0.1:8181/login”,而表單提交的方式是POST。具體如下所示。

  photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

 

2、獲取form表單參數(shù)

下方就是服務(wù)器端獲取表單參數(shù)的代碼。首先我們添加了一個(gè)“/login”路由,路由的請(qǐng)求方式是.post。首先我們獲取請(qǐng)求的參數(shù)。因?yàn)?span style="margin: 0px; padding: 0px; color: rgb(255, 0, 0);">form表單的請(qǐng)求參數(shù)名是“userName”和“password”,所以我們要使用這兩個(gè)namerequest對(duì)象中獲取相應(yīng)的值。獲取到值后你可以查詢數(shù)據(jù)庫或者其他一些操作呢。操作完畢后返回相應(yīng)的json信息。Swift中的字典是可以調(diào)用jsonEncodeString()方法來轉(zhuǎn)換的,后邊的博客會(huì)對(duì)部分Perfect框架的源碼進(jìn)行解析,其中會(huì)涉及到如何將字典轉(zhuǎn)換成json串,在此就不做過多贅述了。

  photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

 

3.表單提交與結(jié)果返回

上面web頁和服務(wù)端都已實(shí)現(xiàn)完畢,接下來我們就開始測(cè)試了。下方就是相應(yīng)的form表單與結(jié)果返回:

   photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

 本篇博客就先到這兒,下篇博客仍然會(huì)對(duì)Perfect框架的相關(guān)內(nèi)容進(jìn)行介紹。