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

轉(zhuǎn)載請附原文鏈接:http://blog.fandong.me/2017/08/17/iOS-SwiftVaporWeb21/

前言

之前一直有做Java后臺開發(fā)的興趣团秽,可是想到要看好多的Java教程,作為一個iOS開發(fā)者钦铁,我放棄了,
后來從朋友韓云智VL那里知道了這個框架乾巧,竟是用Swift寫的派近,不得不說,它燃起了我的興趣忘嫉。
Vapor是一個基于Swift開發(fā)的服務端框架,可以工作于iOS案腺,Mac OS庆冕,Ubuntu。
為了配合Swift部署到服務器,我把ECS的服務器系統(tǒng)改為Ubuntu16.04救湖。

Vapor 2.0 - 文檔目錄
以下文字翻譯自Vapor Docs/HTTP/Response

響應

當我們構建結束點時,我們通常會返回請求的響應,如果我們正在發(fā)出請求,我們將受到.

public let status: Status
public var headers: [HeaderKey: String]
public var body: Body
public var data: Content

狀態(tài)

與事件關聯(lián)的http狀態(tài),例如.ok==200 ok

請求頭

這些是與請求相關的頭,如果你正在準備一個傳出的響應,這可以用來添加你的密鑰.

let contentType = response.headers["Content-Type"]  

或者外發(fā)響應

let response = response ...
response.headers["Content-Type"] = "application/json"
response.headers["Authorization"] = ... my auth token

擴展頭

我們通常會盡可能的刪除字符串類型的代碼來改進代碼庫,我們可以使用通用的擴展向請求頭中添加變量.

extension HTTP.KeyAccessible where Key == HeaderKey, Value == String {
    var customKey: String? {
      get {
        return self["Custom-Key"]
      }
      set {
        self["Custom-Key"] = newValue
      }
    }
}

實現(xiàn)這種模式后,我們的字符串Custom-Key包含在我們代碼的一個部分中,我們現(xiàn)在可以這樣訪問:

let customKey = response.headers.customKey

// or

let request = ...
response.headers.customKey = "my custom value"

請求體

這是與響應相關聯(lián)的請求體,并表示通用數(shù)據(jù)有效載荷,您可以在相關聯(lián)的文檔中查看有關請求體的更多信息
對于響應,請求體最初設置為初始化,有兩種主要類型.
BODYREPRESENTABLE
可以轉(zhuǎn)換成二進制的對象,比如

let response = Response(status: .ok, body: "some string")

在上面的例子中,字符串將自動轉(zhuǎn)換為正文,你自己的類型也可以做到這樣.
BYTES DIRECTLY
如果我們已經(jīng)有了我們自己的字節(jié)數(shù)組,我們可以像這樣傳遞給它

let response = Response(status: .ok, body: .data(myArrayOfBytes))

CHUNKED(分塊)
要發(fā)送一個HTTP.Response塊,我們可以傳遞一個閉包,我們將用來發(fā)送我們的響應部分.

let response = Response(status: .ok) { chunker in
  for name in ["joe", "pam", "cheryl"] {
      sleep(1)
      try chunker.send(name)
  }

  try chunker.close()
}

確保close()在chunker離開范圍之前調(diào)用.

內(nèi)容

我們可以訪問內(nèi)容和我們在請求中一樣,這最常用于外發(fā)請求

let pokemonResponse = try drop.client.get("http://pokeapi.co/api/v2/pokemon/")
let names = pokemonResponse.data["results", "name"]?.array

JSON

要在給定的響應中訪問JSON,使用下面的代碼

let json = request.response["hello"]

關鍵路徑

獲取更多信息,訪問這里

服務端文件

如果你只想從公共目錄來查看服務端文件,你查看FileMiddleware應該是有用的.

let res = try Response(filePath: "/path/to/file.txt")

使用它來初始化文件路徑的文件響應,例如,如果使用公共文件夾,文件名應該在前面添加公共目錄的路徑,即drop.publicDir + "myFile.cool"

Response(filePath: String, ifNoneMatch: String? = nil, chunkSize: Int = 2048) throws

如果沒有匹配表示將用于檢查客戶端上次加載后文件是否已更改的ETag,這樣像瀏覽器這樣的客戶端,可以緩存他們的文件,避免不必要的重復下載,最常計算的是/ https://tools.ietf.org/html/rfc7232#section-3.2
有關怎么使用的示例,請查看"FileMiddleware"

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末愧杯,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子鞋既,更是在濱河造成了極大的恐慌力九,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件邑闺,死亡現(xiàn)場離奇詭異跌前,居然都是意外死亡,警方通過查閱死者的電腦和手機陡舅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評論 3 385
  • 文/潘曉璐 我一進店門抵乓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事灾炭【ビ螅” “怎么了?”我有些...
    開封第一講書人閱讀 157,435評論 0 348
  • 文/不壞的土叔 我叫張陵蜈出,是天一觀的道長田弥。 經(jīng)常有香客問我,道長铡原,這世上最難降的妖魔是什么偷厦? 我笑而不...
    開封第一講書人閱讀 56,509評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮燕刻,結果婚禮上只泼,老公的妹妹穿的比我還像新娘。我一直安慰自己卵洗,他們只是感情好请唱,可當我...
    茶點故事閱讀 65,611評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著过蹂,像睡著了一般籍滴。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上榴啸,一...
    開封第一講書人閱讀 49,837評論 1 290
  • 那天,我揣著相機與錄音晚岭,去河邊找鬼鸥印。 笑死,一個胖子當著我的面吹牛坦报,可吹牛的內(nèi)容都是我干的库说。 我是一名探鬼主播,決...
    沈念sama閱讀 38,987評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼片择,長吁一口氣:“原來是場噩夢啊……” “哼潜的!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起字管,我...
    開封第一講書人閱讀 37,730評論 0 267
  • 序言:老撾萬榮一對情侶失蹤啰挪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后嘲叔,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體亡呵,經(jīng)...
    沈念sama閱讀 44,194評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,525評論 2 327
  • 正文 我和宋清朗相戀三年硫戈,在試婚紗的時候發(fā)現(xiàn)自己被綠了锰什。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,664評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖汁胆,靈堂內(nèi)的尸體忽然破棺而出梭姓,到底是詐尸還是另有隱情,我是刑警寧澤嫩码,帶...
    沈念sama閱讀 34,334評論 4 330
  • 正文 年R本政府宣布誉尖,位于F島的核電站,受9級特大地震影響谢谦,放射性物質(zhì)發(fā)生泄漏释牺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,944評論 3 313
  • 文/蒙蒙 一回挽、第九天 我趴在偏房一處隱蔽的房頂上張望没咙。 院中可真熱鬧,春花似錦千劈、人聲如沸祭刚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽涡驮。三九已至,卻和暖如春喜滨,著一層夾襖步出監(jiān)牢的瞬間捉捅,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評論 1 266
  • 我被黑心中介騙來泰國打工虽风, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留棒口,地道東北人。 一個月前我還...
    沈念sama閱讀 46,389評論 2 360
  • 正文 我出身青樓辜膝,卻偏偏與公主長得像无牵,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子厂抖,可洞房花燭夜當晚...
    茶點故事閱讀 43,554評論 2 349

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