在Express应用程序中为JSON请求设置正确的内容类型

时间:2015-10-01 09:28:19

标签: javascript json node.js

我对节点很新,并尝试设置一个简单的后端解决方案来处理我的Backbone应用程序中的路由。现在我将所有内容都路由到index.html。我的问题是当我发出数据请求时,当我需要Content-Type:text/html; charset=UTF-8时,响应会返回Content-Type:application/json。我知道我需要在某个地方设置此标题,但不确定在哪里,并且想知道是否有人可以提供帮助?

JS

 var express = require('express');
var port = 8000;

var server = express();
server.use('/dist', express.static(__dirname + '/dist'));

server.get('scripts/data/*.json', function(req, res) {
    return res.json({
        success: true
    })
});

server.get('*', function(req, res){
    return res.sendFile(__dirname + '/index.html');
});

server.listen(port, function() {
    console.log('server listening on port ' + port);
});

2 个答案:

答案 0 :(得分:3)

您需要在get方法

中执行此操作

添加

res.setHeader("Content-Type", "application/json");
在sendFile之前

https://nodejs.org/api/http.html#http_response_setheader_name_value

您也可以使用中间件:

在快递中,您可以使用express.static(root, [options])

其中一个选项可以是:setHeaders功能

检查以下链接:

答案 1 :(得分:0)

这是另一种方法。

正如上面的答案中所指出的,您可以将其他参数传递给express.static

因此,为了提供您的*.json文件,您应该将此代码放在*路线上:

app.use('/scripts', express.static(__dirname + '/scripts'), {
    setHeaders: function(res) {
        res.setHeader("Content-Type", "application/json");
    }
});