为express app中的JSON请求设置正确的内容类型

Set correct content type for JSON requests in express app

本文关键字:类型 设置 app express 中的 JSON 请求      更新时间:2023-09-26

我是一个非常新的节点,并试图建立一个简单的后端解决方案来处理我的主干应用程序中的路由。现在我把所有东西都路由到index。html。我的问题是,当我提出数据请求时,当我需要Content-Type:application/json时,响应会返回Content-Type:text/html; charset=UTF-8。我知道我需要在某个地方设置这个标题,但不确定在哪里,想知道是否有人可以帮助?

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);
});

您需要在get方法中执行

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

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

你也可以使用中间件:

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

其中一个选项可以是:setHeaders function

查看这些链接:

  • 使用Express.JS发送额外的http头文件
  • http://expressjs.com/api.html
  • http://expressjs.com/starter/static-files.html

这是另一种方法。

正如上面的答案所指出的,您可以向express.static传递额外的参数。

所以,为了服务你的*.json文件,你应该把这段代码放在你的*路由:
app.use('/scripts', express.static(__dirname + '/scripts'), {
    setHeaders: function(res) {
        res.setHeader("Content-Type", "application/json");
    }
});