我有一个自定义服务,必须以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发送响应也应该起作用。