diff --git a/Response.md b/Response.md index 273441f..a242132 100644 --- a/Response.md +++ b/Response.md @@ -1,80 +1,117 @@ -## `Response`请求体对象 -> 这是一个对原生的http response请求体, 进一步封装的结果, 会自动对url的合法性进行校验, 并且以友好的方式返回错误信息。 同时封装一些常用的方法。 +# `Response`请求体对象 +> 这是一个对原生的**http Response**进一步封装的对象, 封装一些常用的方法。 -### 属性 +## 属性 -+ `.origin` 原生的request和response对象,如果封装的这些方法不满足你的需求,可以直接对原生的request进行操作。 ++ `.ended` 【只读】是否已经向客户端发送数据了, 为true时, 即已结束响应, 无法再追加任何数据。 -+ `.rendered` 是否已经向客户端发送数据了。 ++ `.charset` 【只写】, 设置响应数据的编码(当且仅当响应的内容是文本类型时生效), 默认为`utf-8`。 + ++ `.length` 【只写】, 设置响应数据的字节长度, 一般很少需要手动设置。 + ++ `.body` 【只写】, 设置响应的数据, 可以是Buffer对象, 也可以是字符串, 也可以是 null。 + ++ `.type` 设置响应数据的类型。只需要写后缀名即可, 如 `res.type = 'html'`, `res.type = 'png'`。 + ++ `.status` 设置响应的http状态码。默认 200. -### 方法 + + +## 方法 + `.error(msg, code)` 以好友的方式向客户端输出错误错误信息。 - - msg`` 信息文本 - - code`` Http状态码, 默认500 - - -+ `.status(code)` 预设http状态码。 + - msg`` 信息文本 + - code`` Http状态码, 默认500 +--- + `.redirect(url, force)` url重定向。 - url`` 要重定向的地址, 需带完整的协议 - force`` 是否永远重定向(301), 默认否(302). +--- + + `.location(url)` url跳转(以html的形式)。 > 需要注意的是, 这个跳转是html的方式, 所以请确保你的客户端是浏览器或webview环境。 +--- + + + `.render(data, code)` 以html的形式向客户端输出内容。 - data`` html文本 - - code`` Http状态码, 默认200 + - code`` 【可选】Http状态码, 默认200 + + +--- + + `.sendfile(target|, name)` - target`|` 要发送的数据, 可以是Buffer对象, 也可以字符串文本, 也可以是文件路径; 如果文件比较大, 推荐直接传入路径。 - - name`` 最终要保存的文件名。 + - name`` 【可选】最终要保存的文件名。 - > 以文件形式向客户端输出内容, 即下载功能。 + > 以附件形式向客户端输出内容, 即下载功能, 支持分片下载。 + + +--- -+ `.send(code, msg, data, callback)` ++ `.send(code, msg, data)` - code`` Http状态码, 默认200 - msg`` 额外信息文本 - data`` 要发送的数据, 可以是任意符合json的数据类型。 - - callback`` jsonp协议的回调函数名。[可选] - > 以json格式向客户端输出内容, 可支持jsonp协议; 默认遵循resful-api规范。 + > 以json格式向客户端输出内容, 默认遵循resful-api规范。 + >> 当code的值不在 200~599这个范围内时, http状态不会跟随code的值(会使用默认的200)。 + + +--- -+ `.end(data|)` 向客户端输出内容, 不指定形式。 - - + `.get(key)` 读取预写入客户端的头信息。 > 注意,该方法不读取客户端发送上来的头信息, 是读取即将发送到客户端的头信息。 +--- + + + `.set(key, val)` 预写入客户端的头信息。 > key大小写不敏感。同一个key, 重复写入的话, 会覆盖之前的内容。 +--- + + + `.append(key, val)` 预写入客户端的头信息。 > 功能跟上面的.set()一样, 但是append()方法不会覆盖之前写入的内容, 而是在后面追加。 +--- + ++ `.delete(key)` 删除写入的客户端的头信息。 + + +--- + + + `.cookie(key, val, opt)` 预写入cookie。 > key大小写不敏感, 同一个key会覆盖之前的。 > **注意:** 控制器基类中已经基于本方法封装了一个读取+写入的cookie方法, 建议直接使用。 - ---- -上一节: [⟪Request⟫](https://github.com/bytedo/gmf.core/wiki/Request) -下一节: [⟪会话Session⟫](https://github.com/bytedo/gmf.core/wiki/Session) \ No newline at end of file + + + + + +