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

转载请附原文链接:http://blog.fandong.me/2017/08/17/iOS-SwiftVaporWeb21/

前言

之前一直有做Java后台开发的兴趣,可是想到要看好多的Java教程,作为一个iOS开发者,我放弃了,
后来从朋友韩云智VL那里知道了这个框架,竟是用Swift写的,不得不说,它燃起了我的兴趣。
Vapor是一个基于Swift开发的服务端框架,可以工作于iOS,Mac OS,Ubuntu。
为了配合Swift部署到服务器,我把ECS的服务器系统改为Ubuntu16.04。

Vapor 2.0 - 文档目录
以下文字翻译自Vapor Docs/HTTP/Response

响应

当我们构建结束点时,我们通常会返回请求的响应,如果我们正在发出请求,我们将受到.

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

状态

与事件关联的http状态,例如.ok==200 ok

请求头

这些是与请求相关的头,如果你正在准备一个传出的响应,这可以用来添加你的密钥.

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

或者外发响应

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
      }
    }
}

实现这种模式后,我们的字符串Custom-Key包含在我们代码的一个部分中,我们现在可以这样访问:

let customKey = response.headers.customKey

// or

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

请求体

这是与响应相关联的请求体,并表示通用数据有效载荷,您可以在相关联的文档中查看有关请求体的更多信息
对于响应,请求体最初设置为初始化,有两种主要类型.
BODYREPRESENTABLE
可以转换成二进制的对象,比如

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

在上面的例子中,字符串将自动转换为正文,你自己的类型也可以做到这样.
BYTES DIRECTLY
如果我们已经有了我们自己的字节数组,我们可以像这样传递给它

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

CHUNKED(分块)
要发送一个HTTP.Response块,我们可以传递一个闭包,我们将用来发送我们的响应部分.

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

  try chunker.close()
}

确保close()在chunker离开范围之前调用.

内容

我们可以访问内容和我们在请求中一样,这最常用于外发请求

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"

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,504评论 4 365
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,898评论 1 300
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 110,218评论 0 248
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,322评论 0 214
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,693评论 3 290
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,812评论 1 223
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,010评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,747评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,476评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,700评论 2 251
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,190评论 1 262
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,541评论 3 258
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,206评论 3 240
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,129评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,903评论 0 199
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,894评论 2 283
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,748评论 2 274

推荐阅读更多精彩内容