我有一个自定义服务,必须以CSV格式返回数据。

我不能使用标准的Express路由,因为在此端点上需要Feathers的钩子。

我找不到Feathers服务返回非HTML,非JSON数据的示例,也找不到指定响应内容类型的方法。

从服务方法返回之前使用res.set('Content-Type', 'text/csv')无效;即使方法的返回值是常规字符串,最终的Content-Type标头也被重置为application/json

如何在Feathers的自定义服务方法中正确设置任意响应内容类型?

最佳答案

您可以像这样自定义响应格式:

const feathers = require('feathers');
const rest = require('feathers-rest');

const app = feathers();

function restFormatter(req, res) {
  res.format({
    'text/plain': function() {
      res.end(`The Message is: "${res.data.text}"`);
    }
  });
}

app.configure(rest(restFormatter));


完整的文档可以在here中找到。

使用您的own service specific middleware发送响应也应该起作用。

10-06 06:48