美文网首页
Vapor文档学习廿八: HTTP -Response

Vapor文档学习廿八: HTTP -Response

作者: Supremodeamor | 来源:发表于2017-04-24 14:48 被阅读43次

    在接收的请求后通常要返回Response作为响应。我们做外部请求时也要接收响应对象。

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

    Status

    http请求状态,比如.ok == 200表示请求成功。

    Headers

    与请求相关的请求头信息。如果准备对外部请求做出响应,你可以添加自己的keys。

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

    或者

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

    Extending Headers

    使用扩展优化代码:

    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"
    

    Body

    承载Response的主体内容。主要通过两种方式在初始化时进行设置。

    BodyRepresentable

    可以转换为字节的实例:

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

    上面的String会自动转换为body。你自己的类型也可以这样使用。

    BytesDirectory

    直接使用Bytes array:

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

    Chunked

    发送一个HTTP.Response的代码块,我们可以通过传递闭包发送body部分。

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

    Note:在chunk销毁之前一定要调用close()方法。

    Content

    从响应中获取content和从Request中获取一样:

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

    JSON

    直接使用json数据”

    let json = response.json["hello"]
    

    Key Paths

    使用方法同Request中的Key Paths部分。

    相关文章

      网友评论

          本文标题:Vapor文档学习廿八: HTTP -Response

          本文链接:https://www.haomeiwen.com/subject/mmhpzttx.html