在使用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称之为 - 错误的参数。尴尬!谢谢, 布拉德