Feathers 中的任意响应内容类型

Arbitrary response content types in Feathers

我有一个自定义服务,必须 return CSV 格式的数据。

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

我找不到 Feathers 服务的示例 returning non-HTML、non-JSON 数据,并且找不到指定响应内容类型的方法。

在从服务方法 returning 之前使用 res.set('Content-Type', 'text/csv') 无效;最终的 Content-Type header 被重置为 application/json,即使该方法的 return 值是一个常规字符串。

如何在 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 发送回复应该也可以。