【问题标题】:asp.net webapi 2.0 handle wrong routeasp.net webapi 2.0 处理错误的路由
【发布时间】:2016-07-14 23:07:49
【问题描述】:

我已经为应用程序开发了一个 API,并且我已经设置了所有路由,但是当用户请求错误的操作时,服务器默认返回 404,我试图找到一些改变它的方法,但我没有找到任何东西。 ..

假设我有一个具有以下路线的 api:

/api/school/1/classes

如果客户请求

/api/school/1/classez

我想返回响应代码 501 或 405 而不是默认的 404。 这是怎么做到的?

【问题讨论】:

  • 当您请求不存在的资源时,使用 404 是有意义的。 405 表示不允许的方法,这不是一回事。 501 错误不是您通常会看到的,并且可能会使客户对他们的请求不起作用的原因感到困惑。
  • 是否要为所有 404 返回 501?或者只是在某些情况下?

标签: c# asp.net asp.net-web-api


【解决方案1】:

使用路由属性。

[HttpGet]
[Route("api/{id}/foo")]
public HttpResponseMessage foo(int id)
{
    var response = new ApiResponse();
    response.StatusCode = HttpStatusCode.OK;
    return response;
}

[HttpGet]
[Route("api/{id}/{route}")]
public HttpResponseMessage bar(int id)
{
    var response = new ApiResponse();
    response.StatusCode = HttpStatusCode.BadRequest;
    return response;
}

如果他们输入正确,那么它将输入 foo。否则他们会进入酒吧,你可以随心所欲地处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 2017-08-05
    相关资源
    最近更新 更多