通过WebAPI的Getall方法传递额外参数



如何通过 webapi 的获取方法传递额外参数 GetALL(int page,int limit,int start)它可以正常工作,但是当通过的另一个参数是可选的,并且可能是无效的,它会引发错误。

GetAll(int page,int limit,int start,string ? search)

使其正常工作的最佳方法是什么

在Web API可选参数中是可以无效的。

如果您具有诸如int或datetime之类的类型值,则需要使用?语法使其无效。

但是,当它们是类而不是价值类型时,它们直接可转换为null,因此您不需要,也不能将其标记为可确定的。因此,您的方法签名必须简单地说:

 GetAll(int page,int limit,int start,string search)

如果您希望pagelimitstart是无效的,则应将其声明为int?。因此,在这3个参数上方的int签名是强制性的,最后一个可选的。

编辑,用于OP注释

当您使用Web API的默认路由时,选择正确方法的唯一方法是通过参数匹配,即请求中的参数必须匹配操作中的参数,包括可选参数。因此,有两种使其起作用的方法:

  • 将可选参数发布为空参数。对于您的情况,只要您使用查询字符串,请在url
  • 中包括一个 &search=
  • 修改路由,以便将参数作为路由参数提供,并将搜索参数定义为可选的

您还可以通过在路由中包含操作来完全修改Web API路由。在这种情况下,您必须在URL中指定操作以调用操作,但是可以通过操作名称(通过方法名称或Action属性给出),而不是通过参数匹配来选择该方法。在这种情况下,您无需提供可选参数。它将像MVC路由一样工作。

最新更新