相关疑难解决方法(0)

如何使用ExpressJS检查Content-Type?

到目前为止,我有一个非常基本的RESTful API,我的Express应用程序配置如下:

app.configure(function () {
  app.use(express.static(__dirname + '/public'));
  app.use(express.logger('dev'));
  app.use(express.bodyParser());
});

app.post('/api/vehicles', vehicles.addVehicle);
Run Code Online (Sandbox Code Playgroud)

如何/在哪里可以添加阻止请求到达我的中间件app.post以及app.get内容类型不是application/json

中间件只应将具有不正确内容类型的请求停止到以/api/.开头的URL .

node.js express

11
推荐指数
2
解决办法
2万
查看次数

Expressjs路由器基于Content-Type标头

对于路由,我希望我的中间件将请求在/ html文件夹中定义的路由传递给服务器HTML(ejs),如果头Content-Type是application/json,则使用/ api文件夹中定义的路由.

但我不想在每条路线中定义它.所以我不是在寻找定义一些req.api属性的中间件,我可以在每个路由中检查它

app.get('/', function(req, res) {
    if(req.api_call) {
        // serve api
    } else {
        // serve html
    }
});
Run Code Online (Sandbox Code Playgroud)

但我喜欢这样的事情:

// HTML folder
app.get('/', function(req, res) {
    res.send('hi');
});

// API folder
app.get('/', function(req, res) {
    res.json({message: 'hi'});
});
Run Code Online (Sandbox Code Playgroud)

这是可能的,如果是这样,我该怎么做?

我希望它能像这样工作:

app.use(checkApiCall, apiRouter);
app.use(checkHTMLCall, htmlRouter);
Run Code Online (Sandbox Code Playgroud)

api middleware node.js express

7
推荐指数
2
解决办法
3494
查看次数

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

我正在尝试检查内容的类型,但它似乎不起作用.这是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
Run Code Online (Sandbox Code Playgroud)

以下是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);
Run Code Online (Sandbox Code Playgroud)

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

node.js express

4
推荐指数
1
解决办法
2157
查看次数

node.js express:如何知道请求是否是 AJAX 请求?

假设我有一小段代码:

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

app.get('/', function(req, res){
  //I want to acccess 'req' and get info whether it's an AJAX call
});

app.listen(3000);
Run Code Online (Sandbox Code Playgroud)

当我进入 app.get(..) 函数时,我想知道发送的 get 请求是否是 AJAX 调用。对象“req”中可以告诉我这个的字段是什么?

ajax node.js express

4
推荐指数
2
解决办法
3896
查看次数

标签 统计

express ×4

node.js ×4

ajax ×1

api ×1

middleware ×1