WebAPI REST - 使用多个参数时不调用正确的控制器

时间:2014-03-12 05:26:30

标签: vb.net rest asp.net-web-api

在使用Get请求传递参数时,让Web API调用正确的处理程序时遇到一些问题。

我的基本处理程序是:

Public Function GetAllASTM05Report() As IEnumerable(Of ASTM05Report)

    Return repository.GetAll()

End Function

这样就可以恢复所有记录了。

但现在我想补充一下:

Public Function GetASTM05ReportWithSearch(sortField As String, searchOrder As String, searchField As String, searchValue As String) As IEnumerable(Of ASTM05Report)

    Return repository.GetAllWithSearch(0, 25, sortField, searchOrder, searchField, searchValue)

End Function

但是当我尝试这个URI:

http://localhost/AdminAPI/api/astm05report?sortField=reportId&sortOrder=ASC&searchField=ReportID&searchValue=rr

我希望它使用GetASTM05ReportWithSearch(),但最终会转到GetAllASTM05Report()。

如果删除GetAllASTM05Report(),则会收到错误:找不到与请求URI匹配的HTTP资源。

据说一个人通过传递这样一个对象来实现它:

Public Function GetASTM05ReportWithSearch(<FromBody> values As SearchValues)

    Return repository.GetAllWithSearch(0, 25, values.sortField, values.searchOrder, values.searchField, values.searchValue)

End Function

但是我收到了一个错误:找到了与请求匹配的多个操作

如果我删除GetAllASTM05Report(),GetASTM05ReportWithSearch()会触发,但值不算什么。

我没有更改默认路由表,我的客户端JS不喜欢真正的REST语法,如:

http://localhost/AdminAPI/api/astm05report/reportId/ASC/ReportID/rr

所以我不想探索需要这种路由表模型的解决方案。

帮助!我做错了什么?

编辑:Jon Susiak称之为 - 错误的参数。尴尬!

谢谢, 布拉德

0 个答案:

没有答案