我有以下约束:
[Route("api/currencies/{currencyCode:length(3)}", Name="GetCurrencyByCode")]
public HttpResponseMessage Get(string currencyCode)
如果我提出以下请求,我会收到405方法不允许:
http://localhost:7475/api/currencies/ZSHK
这确实有意义但是响应消息是标准的"请求的资源不支持http方法' GET'"。我想成为一名优秀的REST公民,但是这条消息并没有给客户任何关于实际问题的指示。
有没有人对此方案有任何建议?我有办法更改返回的标准消息吗?
注意 - 我不想创建一个“全部捕获”的内容。任何405的处理程序。我已经看过其中一些解决方案,但我正在寻找更具针对性的路由属性。
答案 0 :(得分:0)
您的路线受长度约束,因此无法匹配并找到,因此405错误。您可以添加一个没有可能返回不同错误或响应的约束的其他路由。具有约束的路由在没有约束的路由之前进行评估,因此如果可能的话,它将在更通用的路径之前匹配约束路由。