📜  Express.js | res.format()函数(1)

📅  最后修改于: 2023-12-03 15:00:40.567000             🧑  作者: Mango

Express.js | res.format()函数

简介

在 Express.js 中,res.format() 是一个非常有用的函数,用于根据请求的 Accept 头部字段来设置响应的内容类型。它允许开发者根据客户端的请求类型,返回不同的响应。res.format() 是基于内容协商的一种方式,可以根据客户端的需求提供适当的响应格式。

用法

res.format() 函数接收一个对象作为参数,该对象的属性是不同的响应类型,值是处理该类型响应的回调函数。当客户端请求的类型与其中一个属性匹配时,将执行对应的回调函数。

res.format({
  'text/plain': function(){
    res.send('This is plain text response');
  },
  
  'text/html': function(){
    res.render('index', { message: 'Hello, World!' });
  },
  
  'application/json': function(){
    res.json({ message: 'Hello, World!' });
  }
});

在上面的例子中,根据客户端请求的 Accept 头部字段,决定了使用 res.send() 函数返回纯文本响应,res.render() 函数返回 HTML 响应,还是使用 res.json() 函数返回 JSON 响应。

默认处理

可以通过在 res.format() 函数的对象参数中添加一个默认处理函数,以便在没有合适的响应类型匹配时执行。

res.format({
  'text/plain': function(){
    res.send('This is plain text response');
  },
  
  'text/html': function(){
    res.render('index', { message: 'Hello, World!' });
  },
  
  'application/json': function(){
    res.json({ message: 'Hello, World!' });
  },

  'default': function(){
    res.status(406).send('Not Acceptable');
  }
});

在上面的例子中,当客户端请求的类型没有匹配到任何一个响应类型时,将返回状态码 406(Not Acceptable)以及一个用于描述错误的消息。

结论

res.format() 函数使得 Express.js 可以根据客户端请求的 Accept 头部字段,动态地选择合适的响应类型进行返回。使用 res.format() 函数使代码更具可读性和可维护性,并且使得开发者能够很容易地根据不同的请求类型返回不同的响应格式。它是实现内容协商的重要工具之一,帮助开发者构建灵活且适应多样化需求的 Web 应用程序。

文档参考:http://expressjs.com/en/api.html#res.format