【问题标题】:Restify: Set default formatterRestify:设置默认格式化程序
【发布时间】:2017-03-21 10:03:15
【问题描述】:

也在官方的 Restify repo 中询问:#1224

嗨,

是否有可能拥有一个可以处理任何未定义的接受类型的默认格式化程序。

例如:

restify.createServer({
    formatters: {
        'application/json': () => {},
        // All other requests that come in are handled by this, instead of throwing error
        'application/every-thing-else': () => {}
    }
});

【问题讨论】:

  • 当您尝试返回自定义模型时,您怎么能期望不必编写此代码?如果有帮助,默认格式化程序用于 application/octet-stream。
  • 我之前并不清楚。更新了问题。我想要一个可以处理除重新设置默认格式化程序列表之外的任何内容的格式化程序。
  • 是的,这正是我想要的。在我的例子中,所有的 mime 类型都只是具有不同属性集的 JSON 输出。
  • 啊。我认为更好的标题是“设置默认格式化程序”,跳过问题的所有第一部分,只使用 restify 标签。

标签: restify


【解决方案1】:

从表面上看,这是不可能的。由于格式化程序存储在字典中,因此无法创建匹配每个输入的键(无论如何这都会破坏字典的意义......)在 JSON 之外完成这种事情的唯一方法是be 与正则表达式一起使用,而正则表达式不适用于 JSON。

这是我编写的用于测试的程序。

var restify = require("restify");

var server = restify.createServer({
    formatters: {
        'application/json': () => { console.log("JSON") },
        "[\w\W]*": () => { console.log("Everything else") } // Does not work
    }
});

server.get("/", (req, res, next) => {
    console.log("Root");
    res.setHeader("Content-Type", "not/supported");
    res.send(200, {"message": "this is a test"});
    next()
});

server.listen(10000);

此外,这里还有一个指向此文档的链接,以防您找到一些我看不到的提示。 Restify documentation

【讨论】:

  • 我可能忽略了,但我找不到关于密钥是正则表达式的文档。有记录吗?
  • 不是,正则表达式不适用于 JSON。我给了我的测试代码来展示我尝试了什么。我希望你拥有它,以防你想自己测试它。
猜你喜欢
  • 2014-07-07
  • 1970-01-01
  • 2013-11-10
  • 1970-01-01
  • 2021-11-22
  • 2019-08-15
  • 2014-02-15
  • 1970-01-01
相关资源
最近更新 更多