响应 API

目录

Response

拓展 http.ServerResponse

封装了所有的 Node.js http.ServerResponse API、事件和属性,以及以下内容。

cache

设置 cache-control 头。

参数

  • type String 报头的值("public" or "private")(可选,默认为 "public")

  • options Object? 一个选项对象

    • options.maxAge Number max-age(秒)

返回 String 设置为报头的值。

noCache

关闭所有与缓存相关的报头。

返回 Response 自身,响应对象。

charSet

将提供的字符集附加到响应的 Content-Type 上。

参数

例子

  1. res.charSet('utf-8');

返回 Response 自身,响应对象。

header

设置响应的报头。

参数

例子

如果仅指定了关键字,则返回报头的值。如果指定了键和值,则设置响应头。

  1. res.header('Content-Length');
  2. // => undefined
  3. res.header('Content-Length', 123);
  4. // => 123
  5. res.header('Content-Length');
  6. // => 123
  7. res.header('foo', new Date());
  8. // => Fri, 03 Feb 2012 20:09:58 GMT

在合适的情况下,header() 也可以用来自动链接报头的值:

  1. res.header('x-foo', 'a');
  2. res.header('x-foo', 'b');
  3. // => { 'x-foo': ['a', 'b'] }

返回 Object 检索或设置的值。

json

语法糖:

  1. res.contentType = 'json';
  2. res.send({hello: 'world'});

参数

  • code Number? http 状态码
  • body Object? 用于 json.stringify 的值
  • headers Object? 设置在响应上的报头

例子

  1. res.header('content-type', 'json');
  2. res.send({hello: 'world'});

返回 Object 响应对象。

link

设置链接报头。

参数

返回 String 将报头的值设置为资源对象。

send

发送响应对象。传递给基于 content-type 头的格式化程序使用的内部 __send

参数

例子

您可以使用 send() 在 Node.js 的 HTTP API 上封装所有常用的 writeHead()、write() 和 end() 调用。 您可以传 codebody,也可以只传一个 bodybody可以时一个 ObjectBufferError。 当您调用 send() 时,restify 会根据 content-type 指出如何格式化响应。

  1. res.send({hello: 'world'});
  2. res.send(201, {hello: 'world'});
  3. res.send(new BadRequestError('meh'));

返回 Object 响应对象。

sendRaw

res.send() 一样,但跳过了格式化这一步。当载体内容已经被预先格式化时,这会非常有用。 发送响应对象。完全跳过格式化程序并将原始内容传递给内部的 __send

参数

返回 Object 响应对象。

set

在响应中设置多个报头。 内部使用 header(),启用多个值的报头。

参数

例子

  1. res.header('x-foo', 'a');
  2. res.set({
  3. 'x-foo', 'b',
  4. 'content-type': 'application/json'
  5. });
  6. // =>
  7. // {
  8. // 'x-foo': [ 'a', 'b' ],
  9. // 'content-type': 'application/json'
  10. // }

返回 Object 自身,响应对象。

status

设置响应中的 http 状态码。

参数

例子

  1. res.status(201);

返回 Number 传入的状态码。

redirect

Redirect 是重定向的语法糖。

参数

  • options Object 用来配置重定向的链接或一个选项对象
    • options.secure Boolean? 是否重定向到 http 或 https
    • options.hostname String? 重定向位置的主机名
    • options.pathname String? 重定向位置的路径名
    • options.port String? 重定向位置的端口号
    • options.query String? 重定向位置的查询字符串参数
    • options.overrideQuery Boolean? 如果为 trueoptions.query 会舍弃当前 URL 上的任何现有的查询参数。默认情况下,会合并这两个值。
    • options.permanent Boolean? 如果为 true,设置为 301。默认为 302。
  • next Function 强制性,完成响应并触发审计记录器。

例子

  1. res.redirect({...}, next);

301/302 重定向的便捷方法。使用该方法会告诉 restify 停止执行您的处理程序链。 您也可以使用选项对象。必须要有 next

  1. res.redirect({
  2. hostname: 'www.foo.com',
  3. pathname: '/bar',
  4. port: 80, // 默认为 80
  5. secure: true, // 设置 https
  6. permanent: true,
  7. query: {
  8. a: 1
  9. }
  10. }, next); // => 重定向到 301 https://www.foo.com/bar?a=1

返回 undefined

redirect

使用状态码和网址进行重定向。

参数

  • code Number http 重定向状态码
  • url String 重定向的网址
  • next Function 强制性,完成响应并触发审计记录器。

例子

  1. res.redirect(301, 'www.foo.com', next);

返回 undefined

redirect

通过网址重定向。

参数

  • url String 重定向的网址
  • next Function 强制性,完成响应并触发审计记录器。

例子

  1. res.redirect('www.foo.com', next);
  2. res.redirect('/foo', next);

返回 undefined