在我的ApiController
中,我有一个GET方法正在从数据库返回一些数据。
现在,我必须通过添加一个更多GET方法来扩大该控制器,该方法将从同一数据库返回数据,但是以另一种方式格式化,因此参数[[传递给该方法的参数将是相同的]与从第一个开始。
我正在尝试执行以下操作:Public Class CshController
Inherits ApiController
Public Function GetValoriCsh(ByVal npv As String, ByVal nc As String) As IEnumerable(Of Cshlvl)
Dim csh As Cshlvl = New Cshlvl
Return csh.ValoreCsh(npv, nc)
End Function
Public Function GetOperazioni(ByVal npv As String, ByVal nc As String) As IEnumerable(Of OperazioniCsh)
Dim operazioni As OperazioniCsh = New OperazioniCsh
Return operazioni.OperazioniCsh(npv, nc)
End Function
End Class
所以问题来了,api失败了,因为有两种方法需要相同的参数,所以它不知道如何选择我要使用的方法。实际上,我是通过以下URL api / csh /调用以下api的,是否可以通过某种方式调用api / csh /从GetValoriCsh获取数据,就像通过调用api / csh / operazioni /这样的数据来获取数据一样来自GetOperazioni吗?
我的WebApiConfig
Public Module WebApiConfig Public Sub Register(ByVal config As HttpConfiguration) ' Servizi e configurazione dell'API Web ' Route dell'API Web config.MapHttpAttributeRoutes() config.Routes.MapHttpRoute( name:="DefaultApi", routeTemplate:="api/{controller}/{id}", defaults:=New With {.id = RouteParameter.Optional} ) End Sub End Module
我尝试在GetOperazioni上方添加<Route("api/csh/op")>
,但没有效果。
<RoutePrefix("api/csh")>
Public Class CshController
Inherits ApiController
'GET api/csh
<HttpGet()>
<Route("")>
Public Function GetValoriCsh(ByVal npv As String, ByVal nc As String) As IEnumerable(Of Cshlvl)
Dim csh As Cshlvl = New Cshlvl
Return csh.ValoreCsh(npv, nc)
End Function
'GET api/csh/op
<HttpGet()>
<Route("op")>
Public Function GetOperazioni(ByVal npv As String, ByVal nc As String) As IEnumerable(Of OperazioniCsh)
Dim operazioni As OperazioniCsh = New OperazioniCsh
Return operazioni.OperazioniCsh(npv, nc)
End Function
End Class
参考Attribute Routing in ASP.NET Web API 2