7

我使用 VS2012 创建了 ASP.NET MVC Web API 项目的 hello world:

public class ValuesController : ApiController
{
    // GET api/values
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }

    // GET api/values/5
    public string Get(int id)
    {
        return "value";
    }
}

向该控制器发出 get 请求会返回状态为 200 的一些 XML 数据。到目前为止一切正常。

当我删除该方法时,如下所示:

public class ValuesController : ApiController
{
    // GET api/values
    //public IEnumerable<string> Get()
    //{
    //    return new string[] { "value1", "value2" };
    //}

    // GET api/values/5
    public string Get(int id)
    {
        return "value";
    }
}

然后我得到一个 404 未找到。我想要的是 400 错误请求,因为必须提供 ID。我怎样才能做到这一点?

4

2 回答 2

10

您不必Get()为了抛出错误而保留该方法。将 Get by ID 方法的签名更改为:

public string Get(int? id = null)
{
    if (id == null) throw new HttpResponseException(HttpStatusCode.BadRequest);
    return "value";
}
于 2013-01-07T04:27:51.017 回答
4

一种方法是包含该方法,但会引发异常:

public class ValuesController : ApiController
{
    // GET api/values
    public void Get()
    {
        throw new HttpResponseException(HttpStatusCode.BadRequest);
    }

    // GET api/values/5
    public string Get(int id)
    {
        return "value";
    }
}
于 2013-01-07T01:47:08.120 回答