vb.net - 如何向WebApi传递多个属性?

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

我有一个用VB.NET制作的webapi,我可以在其中获取所有数据,按月的数据和按年的数据。现在我尝试添加按数据范围获取数据的功能,在构造函数中该方法如下所示:

Public Function TotaliDataData(ByVal inizio As String, ByVal fine As String) As IEnumerable(Of Totali)
    Dim SQLConnect As String = "Server=127.0.0.1;Port=3306;Database=00168780351;Uid=root;Pwd=block;"
    Dim cn As New MySqlConnection(SQLConnect)
    Dim cmd As New MySqlCommand("SELECT NPV_TT, NCASSA_TT, DATA_TT, AZZ_TT, SUM(NSC_TT) AS NSC_TT, SUM(VENDITE_TT) AS VENDITE_TT, RESI_TT, ANNULLI_TT, SCONTI_TT, FATTURE_TT, NC_TT FROM totali WHERE DATA_TT BETWEEN '" & inizio & "' AND  '" & fine & "' GROUP BY MONTH(DATA_TT);", cn)
    cn.Open()
    Dim reader As MySqlDataReader = cmd.ExecuteReader()
    Dim totali As List(Of Totali) = ConvertReader(reader)
    cn.Dispose()
    Return totali
End Function

这是我的 TotaliController.VB:

Public Class TotaliController
    Inherits ApiController

    Public Function GetTotali() As IEnumerable(Of Totali)
        Dim Totali As Totali = New Totali
        Return Totali.GetTotali()
    End Function

    Public Function GetTotaliByYear(ByVal anno As String) As IEnumerable(Of Totali)
        Dim Totali As Totali = New Totali
        Return Totali.TotaliAnno(anno)
    End Function

    Public Function GetTotaliByMonth(ByVal mese As String) As IEnumerable(Of Totali)
        Dim Totali As Totali = New Totali
        Return Totali.TotaliMese(mese)
    End Function

    Public Function TotaliDataData(ByVal inizio As String, ByVal fine As String) As IEnumerable(Of Totali)
        Dim Totali As Totali = New Totali
        Return Totali.TotaliDataData(inizio, fine)
    End Function

    Public Function GetDetails(ByVal annod As String) As IEnumerable(Of Totali)
        Dim Totali As Totali = New Totali
        Return Totali.GetDetails(annod)
    End Function

End Class

然后我尝试调用 localhost:port/api/totali/?inizio=2019-11-10&fine=2019-12-20 但它甚至没有进入 Controller 的调试内部而如果我尝试使用单个参数按月或按年获取数据,则效果很好..

那么如何将多个参数传递给 WebApi?

更新:

当我尝试运行 localhost:port/api/totali/?inizio=2019-11-10&fine=2019-12-20 时,它会从 Controller 调用默认的 GetTotali() 方法,该方法返回所有来自数据库的数据。

全局:

Public Class WebApiApplication
    Inherits System.Web.HttpApplication

    Protected Sub Application_Start()
        GlobalConfiguration.Configure(AddressOf WebApiConfig.Register)
        GlobalConfiguration.Configuration.Formatters.
            JsonFormatter.MediaTypeMappings.Add(New RequestHeaderMapping("Accept", "text/html", StringComparison.InvariantCultureIgnoreCase, True, "application/json"))
    End Sub

End Class

WebApi配置

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

最佳答案

显然,WebApi Controller 中的方法名称必须以 REST 前缀开头,因此通过将方法名称 TotaliDataData 更改为 GetTotaliDataData 解决了问题。

关于vb.net - 如何向WebApi传递多个属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58815817/

相关文章:

asp.net-mvc - 阻止未确认电子邮件的用户登录 ASP.NET MVC Web API Identity(OWIN 安全)

c++ - 标准键盘驱动程序源代码 - 我在哪里可以找到它?

vb.net - DataGridView - 如何卡住一列?

php - 使用 api 调用更新 laravel 中的值

c# - 一个项目中的最佳实践 webapi/website

c# - 为什么属性在类型转换错误时得到验证?

VB.NET Windows 窗体上下文菜单位置

asp.net - VB.NET 数组包含方法不起作用

c - 限制 libcurl 响应数据

php - Bigcommerce API 博客文章