asp.net核心web api - 具有不同查询参数的相同url

时间:2018-01-30 13:01:07

标签: asp.net-web-api asp.net-core asp.net-core-webapi asp.net-web-api-routing

我有一个控制器类如下:

[Route("api/[controller]")]
public class ItemController : Controller
{
    //GET api/item?employId=1009
    [HttpGet]
    public List<ItemViewModel> GetByEmployId([FromQuery]long employId) {
            return new List<ItemViewModel>() {
                new ItemViewModel(),
                new ItemViewModel(),
                new ItemViewModel()
            };
    }

    // GET api/item?managerId=1009
    [HttpGet]
    public List<ItemViewModel> GetByManagerId([FromQuery]long managerId) {
        return new List<ItemViewModel>();
    }
}

对于第一个网址(http://localhost/api/item?employId=1),网络API可以返回结果。但对于第二个URL(http://localhost/api/item?managerId=2),web api返回错误,HTTP代码为500.有人可以帮助解决为什么会这样吗?感谢。

出于某种原因,我无法使用web api项目进行调试。

1 个答案:

答案 0 :(得分:0)

有些过时,但是即使有人遇到相同的问题,也可以在此处找到响应。为此,您只需将查询参数添加为函数参数。使用相同的示例。

[Route("api/[controller]")]
public class ItemController : Controller
{

    [HttpGet]
    [Route("")]
    public List<ItemViewModel> Get([FromQuery]long employId, [FromQuery] long managerId) {
            if(employId != null){
                    return new List<ItemViewModel>() {
                new ItemViewModel(),
                new ItemViewModel(),
                new ItemViewModel()
              };
             }
            if(managerId != null){

               return new List<ItemViewModel>();
           }

          return new List();

    }


}