使用.is()检查请求类型的Express.js不起作用

时间:2012-07-30 18:57:23

标签: node.js express

我正在尝试检查内容的类型,但似乎没有效果。这是shell上的输出:

$ node app.js
# Request http://localhost:3000 via browser
CLIENT DOES NOT WANT XML, JSON, OR HTML
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

以下是app.js脚本的内容:

var express = require('express');
var app = express.createServer();

app.get('/', function(req, res) {
    if (req.is('xml')) {
        console.log("CLIENT WANTS XML");
    } else if (req.is('json') || req.is('html')) {
        console.log("CLIENT WANTS JSON OR HTML");
    } else {
        console.log("CLIENT DOES NOT WANT XML, JSON, OR HTML");
        console.log(req.header('Accept'));
    }
});

app.listen(3000);

我希望text/html Accept标头触发req.is('html')函数甚至application/xhtml+xml Accept标头来触发req.is('xml'),但是else语句实际上是运行。我正在使用Express 3.0.0 rc1和Node 0.8.1。

1 个答案:

答案 0 :(得分:6)

原来我应该使用.accepts(),而不是.is()