基于Swift的Web框架Vapor2.0文檔(翻譯)Config

轉(zhuǎn)載請(qǐng)附原文鏈接:http://blog.fandong.me/2017/08/07/iOS-SwiftVaporWeb07/

前言

之前一直有做Java后臺(tái)開(kāi)發(fā)的興趣,可是想到要看好多的Java教程,作為一個(gè)iOS開(kāi)發(fā)者,我放棄了,
后來(lái)從朋友韓云智VL那里知道了這個(gè)框架,竟是用Swift寫(xiě)的,不得不說(shuō),它燃起了我的興趣。
Vapor是一個(gè)基于Swift開(kāi)發(fā)的服務(wù)端框架,可以工作于iOS,Mac OS,Ubuntu。
為了配合Swift部署到服務(wù)器,我把ECS的服務(wù)器系統(tǒng)改為Ubuntu16.04。

Vapor 2.0 - 文檔目錄
以下文字翻譯自Vapor Docs/Configs/Config

配置文件

一個(gè)應(yīng)用程序的配置設(shè)置,云應(yīng)用通常需要可以根據(jù)其環(huán)境進(jìn)行調(diào)整的復(fù)雜設(shè)置,Vapor打算提供可以為給定的用戶定制化的靈活配置交互

快速開(kāi)始

對(duì)于Vapor的應(yīng)用程序,配置文件需要放到名為Config的頂級(jí)目錄,這里是一個(gè)簡(jiǎn)單的server配置文件的例子

./
├── Config/
│   ├── server.json

server.json的樣子應(yīng)該是下面這樣的

{
    "host": "0.0.0.0",
    "port": 8080,
    "securityLayer": "none"
}

這就表示我們的應(yīng)用程序會(huì)在主機(jī)IP為0.0.0.0,端口號(hào)為8080啟動(dòng)服務(wù),這就代表訪問(wèn)的URL為http://localhost:8080

自定義鍵

讓我們添加一個(gè)自定義的鍵到server.json文件中

{
    "host":"0.0.0.0",
    "port": 8080,
    "securityLayer": "none" ,
    "custom-key":"custom-value"
}

這些鍵值可以在你的應(yīng)用程序中用以下的代碼獲取到

let customValue = drop.config["server","custom-key"]?.string ?? "default"

就是這樣,自由地去添加和必要的利用這些鍵來(lái)讓你的應(yīng)用程序配置更加簡(jiǎn)單

配置語(yǔ)法

用下面這個(gè)配置語(yǔ)法你可以獲取Config目錄app.config[fileName,path,to,key],舉個(gè)例子,假設(shè)除了server.json前面提到的文件之外,還有一個(gè)key.json如下所示的文件

{ 
  “test-names” : [ 
    “joe” ,
    “jane” ,
    “sara” 
  ],
  “mongo” : { 
    “url”  : “www.customMongoUrl.com” 
  } 
}

我們要確保第一個(gè)參數(shù)是keys才能獲取到文件

let name = drop.config["keys", "test-names", 0]?.string ?? "default"

或者我們的mango url

let mongoUrl = drop.config["keys", "mongo", "url"]?.string ?? "default"

高級(jí)配置

有一個(gè)默認(rèn)的server.json文件就可以了,但是如果需要復(fù)雜的使用場(chǎng)景呢?舉個(gè)例子,如果你在開(kāi)發(fā)環(huán)境和生產(chǎn)環(huán)境有不同的主機(jī)地址,這些復(fù)雜的場(chǎng)景設(shè)置可以通過(guò)增加額外的目錄到Config/目錄,下面是一個(gè)為了設(shè)置開(kāi)發(fā)和生產(chǎn)環(huán)境的文件目錄的例子

WorkingDirectory/
├── Config/
│   ├── servers.json
│   ├── production/
│   │   └── servers.json
│   ├── development/
│   │   └── servers.json
│   └── secrets/
│       └── servers.json

在命令行中用--env=.Custome environment來(lái)指定你的運(yùn)行環(huán)境,Vapor已經(jīng)提供了很少一部分默認(rèn)的模式,生產(chǎn)環(huán)境,開(kāi)發(fā)環(huán)境,測(cè)試環(huán)境。

vapor run --env=production

優(yōu)先級(jí)

配置文件將會(huì)在以下的優(yōu)先級(jí)中獲取

1.CLI(看下方)
2.Config/secret
3.Config/name-of-environment
4.Config/
這就表示,如果一個(gè)用戶訪問(wèn)了app.config["server","host"],這些鍵將會(huì)首先在CLI中搜索,然后是secret/目錄,然后是默認(rèn)配置的頂級(jí)目錄

secret/目錄應(yīng)該添加到.gitignore忽略文件中

舉個(gè)例子

讓我們從下面這個(gè)JSON文件

server.json
{
    "host": "0.0.0.0",
    "port": 9000
}
production/server.json
{
    "host": "127.0.0.1",
    "port": "$PORT"
}

這個(gè)"$NAME"語(yǔ)法對(duì)于所有獲取環(huán)境變量的值都是可用的

請(qǐng)注意server.jsonproduction/server.json都包含了同樣的鍵hostport在應(yīng)用程序中,我們將會(huì)這樣訪問(wèn)

// will load 0.0.0.0 or 127.0.0.1 based on above config
let host = drop.config["server" "host"]?.string ?? "0.0.0.0"
// will load 9000, or environment variable port.
let port = drop.config["server", "port"]?.int ?? 9000

命令行

除了嵌套在Config/目錄中的json文件外,我們還可以使用命令行將參數(shù)傳遞到我們的配置文件中,默認(rèn)情況下,這些值將會(huì)設(shè)置為CLI文件,當(dāng)然也可以使用更復(fù)雜的選項(xiàng)
如果你希望將命令行設(shè)置為除CLI之外的文件,則可以使用此更高級(jí)的規(guī)范,比如下面這個(gè)CLI命令

--config:keys.analytics = 124ZH61F

可以通過(guò)以下方式在你的應(yīng)用程序中訪問(wèn)

let analyticsKey = drop.config["keys", "analytics"]?.string
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容