2016-11-07 78 views
3

同时要求在官方的RESTify回购:#1224的RESTify:设置默认格式

嗨,

是否有可能有一个默认格式,可以处理任何接受一个没有被定义的类型。

例如:

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

当您尝试返回自定义模型时,您如何预期不必编码?默认的格式化程序是用于application/octet-stream的,如果有帮助的话。 – HeadCode

+0

我之前并不清楚。更新了问题。我想要一个格式化程序,它可以处理除默认格式化程序列表之外的其他任何格式程序。 – Zuhaib

+0

是的,这正是我想要的。在我的情况下,所有的MIME类型只是具有不同属性的JSON输出。 – Zuhaib

回答

0

通过外表来看,这是不可能的。由于格式化程序存储在字典中,因此无法创建与每个输入相匹配的键(这样做无论如何会击败字典的点)。在JSON之外完成这种事情的唯一方法是使用正则表达式,而正则表达式不适用于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

+0

我可能忽略了,但我找不到关于正则表达式的关键文档。有记录吗? – Zuhaib

+1

这不是,正则表达式不适用于JSON。我给我的测试代码显示我的尝试。我希望你有它,以防你想自己测试它。 – carchase