如何通过 webapi 的Get方法传递额外参数,因为当我通过时
GetALL(int page,int limit,int start)
它工作正常,但是当传入一个可选的参数并且可能为null时,它会抛出错误。
GetAll(int page,int limit,int start,string ? search)
让它运作的最佳方式是什么
答案 0 :(得分:0)
在Web API中,可选参数是可以为空的参数。
如果您有类型值,如int或DateTime,则需要使用?
语法使它们为空。
但是当他们使用类而不是值类型时,它们可以直接转换为null,因此您不需要也不能将它们标记为可为空。所以,你的方法签名必须简单:
GetAll(int page,int limit,int start,string search)
如果您希望page
,limit
或start
可以为空,则应将其声明为int?
。因此,在这个3个参数上面的签名是强制性的,最后一个是可选的。
编辑,OP评论
当您使用Web API的默认路由时,选择正确方法的唯一方法是通过参数匹配,即请求中的参数必须与操作中的参数匹配,包括可选参数。因此,有两种方法可以使其发挥作用:
&search=
您还可以通过在路径中包含操作来完全修改Web API路由。在这种情况下,您必须在URL中指定要调用操作的操作,但该方法可以通过操作名称(由方法名称或Action
属性给出)来选择,而不是通过参数匹配来选择。在这种情况下,您不需要提供可选参数。它将像MVC路由一样工作。