如何通过 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)
如果您希望page
,limit
或start
是无效的,则应将其声明为int?
。因此,在这3个参数上方的int签名是强制性的,最后一个可选的。
编辑,用于OP注释
当您使用Web API的默认路由时,选择正确方法的唯一方法是通过参数匹配,即请求中的参数必须匹配操作中的参数,包括可选参数。因此,有两种使其起作用的方法:
- 将可选参数发布为空参数。对于您的情况,只要您使用查询字符串,请在url 中包括一个
- 修改路由,以便将参数作为路由参数提供,并将搜索参数定义为可选的
&search=
您还可以通过在路由中包含操作来完全修改Web API路由。在这种情况下,您必须在URL中指定操作以调用操作,但是可以通过操作名称(通过方法名称或Action
属性给出),而不是通过参数匹配来选择该方法。在这种情况下,您无需提供可选参数。它将像MVC路由一样工作。