【问题标题】:Web API Attribute Routing ConstraintWeb API 属性路由约束
【发布时间】:2014-11-20 21:23:29
【问题描述】:

我有以下限制:

[Route("api/currencies/{currencyCode:length(3)}", Name="GetCurrencyByCode")]
public HttpResponseMessage Get(string currencyCode)

如果我提出以下请求,我会收到 405 Method Not Allowed:

http://localhost:7475/api/currencies/ZSHK

这确实有意义,但是响应消息是标准的“请求的资源不支持 http 方法'GET'”。我想成为一个优秀的 REST 公民,但这条消息并没有给客户任何关于实际问题的指示。

有人对这种情况有什么建议吗?有没有办法让我更改返回的标准消息?

注意 - 我不想为任何 405 创建一个“包罗万象”的处理程序。我已经看到了其中一些解决方案,但我正在寻找更针对此特定路由属性的解决方案。

【问题讨论】:

    标签: asp.net-web-api2 asp.net-web-api-routing


    【解决方案1】:

    您的路线受长度限制,因此无法匹配并被找到,因此出现 405 错误。您可以添加一个额外的路由,而没有可能返回不同错误或响应的约束。有约束的路由先于没有约束的路由进行评估,因此如果可能,它会在更通用的路由之前匹配受约束的路由。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-24
      • 2015-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多