使用Swift4+Vapor寫后端-初體驗(yàn)

簡(jiǎn)介

Vapor 是一個(gè)基于純 Swift 構(gòu)建出的 Web 開發(fā)框架,目前可以運(yùn)行在 macOS 和 Ubuntu ,用于構(gòu)建出漂亮易用的網(wǎng)站或者 API 服務(wù)。
Vapor的官網(wǎng)做的很漂亮音诈,文檔也比較完整,是一款比較主流狂秦、優(yōu)雅、更新活躍的框架推捐,非常適合初學(xué)者裂问。

環(huán)境配置

  • Xcode 9.3
  • Swift 4.1
  • Vapor Toolbox: 3.1.4

安裝

安裝官方文檔安裝步驟即可。

macOS下牛柒,首先要安裝Xcode9

安裝Homebrew

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安裝Vapor堪簿。

brew install vapor

新建項(xiàng)目

創(chuàng)建一個(gè)名為“helloWorld”的項(xiàng)目。

vapor new helloWorld

vapor的文件結(jié)構(gòu)類似于其他Web框架皮壁。


helloWorld
├── Config
│   ├── app.json
│   ├── crypto.json
│   ├── droplet.json
│   ├── fluent.json
│   └── server.json
├── Package.pins
├── Package.swift
├── Public
├── README.md
├── Sources
│   ├── App
│   │   ├── Config+Setup.swift
│   │   ├── Controllers
│   │   │   └── PostController.swift
│   │   ├── Droplet+Setup.swift
│   │   ├── Models
│   │   │   └── Post.swift
│   │   └── Routes
│   │       └── Routes.swift
│   └── Run
│       └── main.swift
├── Tests
│   ├── AppTests
│   │   ├── PostControllerTests.swift
│   │   ├── RouteTests.swift
│   │   └── Utilities.swift
│   └── LinuxMain.swift
├── circle.yml
└── license

項(xiàng)目主體目錄層級(jí)

helloWorld
└── Sources
    └── App
        └── Routes.swift

編譯之前需要拉取項(xiàng)目所有的依賴包椭更,Vapor使用Swift Package Manager 來管理包,使用vapor fetch命令進(jìn)行拉取依賴蛾魄,拉取到本地后后所有的包源碼將會(huì)在 Packages 目錄中虑瀑,如下:

CLibreSSL-1.0.0     Fluent-1.1.0        Node-1.0.1          Turnstile-1.0.3
CMySQL-1.0.0        FluentMySQL-1.0.1   PathIndexable-1.0.0 Vapor-1.2.0
Console-1.0.1       JSON-1.0.1          Polymorphic-1.0.1   VaporMySQL-1.1.0
Core-1.0.0          Jay-1.0.0           Routing-1.0.1
Crypto-1.0.1        Leaf-1.0.3          Socks-1.2.0
Engine-1.3.0        MySQL-1.0.2         TLS-1.1.0

這類似于iOS中使用cocoapods管理依賴包時(shí)的pod install

編譯和運(yùn)行

使用vapor build或者vapor build --release編譯項(xiàng)目
使用vapor run serve運(yùn)行項(xiàng)目滴须。

這時(shí)就可以通過在瀏覽器中輸入localhost:8080/plaintext 或者運(yùn)行curl localhost:8080/plaintext來請(qǐng)求模板中的示例請(qǐng)求舌狗。

使用Xcode

cd進(jìn)入項(xiàng)目目錄下,我們可以使用 vapor xcode命令生成Xcode項(xiàng)目扔水,然后就可以直接使用 Xcode進(jìn)行web開發(fā)了痛侍,這對(duì)于iOS開發(fā)者是那么的熟悉。用Xcode打開項(xiàng)目铭污,選擇Run scheme來運(yùn)行恋日。

vapor模板中Routes.swift中已經(jīng)有了幾個(gè)示例膀篮,例如:

get("hello") { req in
            var json = JSON()
            try json.set("hello", "world")
            return json
        }

我們運(yùn)行起來項(xiàng)目后嘹狞,直接在瀏覽器里輸入“0.0.0.0:8080/hello”這個(gè)get請(qǐng)求岂膳,就會(huì)返回響應(yīng)的json數(shù)據(jù)。

{
hello: "world"
}

最后

vapor初步了解磅网,感覺很不錯(cuò)的樣子√附兀現(xiàn)在我們已經(jīng)了解了vapor的基本操作,下一步我們學(xué)習(xí)一下使用Heroku部署服務(wù)器涧偷。Heroku為個(gè)人用戶提供了一個(gè)免費(fèi)沙盒(512 MB RAM │ 1 web/1 worker)簸喂,我們可以使用它免費(fèi)去部署一個(gè)屬于自己的服務(wù)器。訪問速度是有點(diǎn)慢燎潮,畢竟國(guó)外免費(fèi)喻鳄。新開的坑,希望接下來能夠慢慢填确封。

相關(guān)參考

vapor3.0 文檔

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末除呵,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子爪喘,更是在濱河造成了極大的恐慌颜曾,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,692評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秉剑,死亡現(xiàn)場(chǎng)離奇詭異泛豪,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)侦鹏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門诡曙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人略水,你說我怎么就攤上這事价卤。” “怎么了聚请?”我有些...
    開封第一講書人閱讀 162,995評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵荠雕,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我驶赏,道長(zhǎng)炸卑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,223評(píng)論 1 292
  • 正文 為了忘掉前任煤傍,我火速辦了婚禮盖文,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蚯姆。我一直安慰自己五续,他們只是感情好洒敏,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著疙驾,像睡著了一般凶伙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上它碎,一...
    開封第一講書人閱讀 51,208評(píng)論 1 299
  • 那天函荣,我揣著相機(jī)與錄音,去河邊找鬼扳肛。 笑死傻挂,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的挖息。 我是一名探鬼主播金拒,決...
    沈念sama閱讀 40,091評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼套腹!你這毒婦竟也來了绪抛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,929評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤沉迹,失蹤者是張志新(化名)和其女友劉穎睦疫,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鞭呕,經(jīng)...
    沈念sama閱讀 45,346評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蛤育,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了葫松。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瓦糕。...
    茶點(diǎn)故事閱讀 39,739評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖腋么,靈堂內(nèi)的尸體忽然破棺而出咕娄,到底是詐尸還是另有隱情,我是刑警寧澤珊擂,帶...
    沈念sama閱讀 35,437評(píng)論 5 344
  • 正文 年R本政府宣布圣勒,位于F島的核電站,受9級(jí)特大地震影響摧扇,放射性物質(zhì)發(fā)生泄漏圣贸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評(píng)論 3 326
  • 文/蒙蒙 一扛稽、第九天 我趴在偏房一處隱蔽的房頂上張望吁峻。 院中可真熱鬧,春花似錦、人聲如沸用含。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽啄骇。三九已至痴鳄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間肠缔,已是汗流浹背夏跷。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工哼转, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留明未,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,760評(píng)論 2 369
  • 正文 我出身青樓壹蔓,卻偏偏與公主長(zhǎng)得像趟妥,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子佣蓉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 參考文章: Server-Side Swift with Vapor 簡(jiǎn)單介紹:Mac 上安裝和使用Postgre...
    Supremodeamor閱讀 3,012評(píng)論 4 14
  • 這場(chǎng)生日宴請(qǐng)了不少同學(xué)勇凭,特別是女生就圍著他們?nèi)齻€(gè)轉(zhuǎn)疚膊,史蒂芬覺得有點(diǎn)無聊,這是名流的社交圈虾标,聊的都是些大生意寓盗,送的生...
    面堂閱讀 230評(píng)論 0 0
  • 其實(shí)今天劉潤(rùn)老師這一課,同理心璧函,情商傀蚌,正是我本人非常欠缺的,一個(gè)情商高的人蘸吓,朋友一定非常多善炫,大家都愿意和他在一起,...
    王春海閱讀 369評(píng)論 2 3
  • 今天抬頭看到風(fēng)扇上都是會(huì)库继,一回想上次擦拭風(fēng)扇還是在四月份箩艺,正好高鵬因?yàn)殄\旗的原因梯子已經(jīng)搬下來了,我就打水拿抹布擦...
    姜雷_24b1閱讀 217評(píng)論 0 0