В моем ApiController
у меня был один метод GET , который возвращал некоторые данные из БД.
Теперь мне нужно увеличить этот контроллер, добавив еще один метод GET , который будет возвращать данные из той же базы данных, но с другим форматом, поэтому параметры , которые я передал этому методу, будут такими же < / strong> как с 1-го.
Я пытался сделать следующее:
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 не работает, поскольку есть два метода, для которых требуются одинаковые параметры, поэтому он не знает, как выбрать, какой из них использовать.
На самом деле я вызываю следующий api по следующему URL-адресу api / csh /, возможно ли каким-то образом, вызывая 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
Я пытался добавить <Route("api/csh/op")>
выше Get Operazioni, но это не помогло.
1 ответ
Если используется маршрутизация по атрибутам, все или ничего.
<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
Ссылка Маршрутизация атрибутов в ASP.NET Web API 2
Похожие вопросы
Новые вопросы
vb.net
Visual Basic.NET (VB.NET) - это мультипарадигмальный, управляемый, типобезопасный, объектно-ориентированный язык компьютерного программирования. Наряду с C # и F # это один из основных языков, нацеленных на .NET Framework. VB.NET можно рассматривать как эволюцию Microsoft Visual Basic 6 (VB6), но реализованную в Microsoft .NET Framework. НЕ ИСПОЛЬЗУЙТЕ этот тег для вопросов VB6, VBA или VBScript.