我们最近更改了一些Nancy路线,并且测试失败了,并且没有使用405 MethodNotAllowed。
通过Nancy调试后,我们遇到了StaticConfiguration.DisableMethodNotAllowedResponses属性。将此值设置为true表示测试失败并带有404。
我的问题是,何时/为什么最好返回405而不是404?我可以理解这是有道理的,例如你试图POST到只支持GET的路线,但我不认为这与我们的场景相同。
路线改变之前:
Get["/web/api/somepath/{param1}/{param2}"]
Post["/web/api/somepath/{param1}"]
路线改变后:
Get["/web/api/somepath/{param1}/{param2}"]
Post["/web/api/somepath/{param1}/{param2}"]
我们的(过期)测试是POST到/web/api/somepath/param1Value
也许这只是与Nancy如何评分路线相关的边缘情况?
附加说明:我在DefaultRouteResolver.Resolve()中注意到以下行运行时,allowedMethods只包含GET(由于某种原因我无法调试到RouteResolverTrie代码):
var allowedMethods = this.trie.GetOptions(pathDecoded,context).ToArray();
(澄清一下,我希望allowMethods包含GET和POST)。