如何向RESTfulWebAPIGET方法传递/接收多个参数?接收参数(返回标量值而不是数据集)的GETRESTful方法的一个常见示例如下所示:publicstringGet(intid){//getandreturnthevalue}...传递的val通常是一个ID,因此您可以使用它来获取基于该唯一值的标量值。但是如果想传递string、int这样的多个值怎么办?只需像这样定义一个方法:publicstringGet(stringsomeString,intsomeInt){//getandreturnthevalue}...然后这样调用它://conststringuri="http://192.112.183.42:80/api/platypusItems/someString/someInt";,zB:conststringuri="http://192.112.183.42:80/api/platypusItems/DuckbilledPlatypisAreGuysToo/42";varwebRequest=(HttpWebRequest)WebRequest.Create(uri);?IOW,路由机制是否发现,由于传递了两个参数,它应该使用两个参数调用Get()方法(“约定优于配置”),还是需要做更多事情才能正确路由?如果您使用WebAPI2,则可以使用属性路由来路由请求,例如http://192.112.183.42:80/api/platypusItems/DuckbilledPlatypisAreGuysToo/42publicclassItemsController:ApiController{[Route("api/{controller}/{id}")]publicstringGetItemById(intid){//在此处查找项目...returnitem.ToString();}[Route("api/{controller}/{name}/{id}")]publicstringGetItemByNameAndId(stringname,intid){//在此处查找项目...returnitem.ToString();}}http://192.112.183.42:80/api/platypusItems/DuckbilledPlatypisAreGuysToo/42将映射到GetItemByNameAndId和http://192.112.183.42:80/api/platypusItems/42将映射到GetItemById请注意,您需要在配置中启用属性路由,如下所示:publicstaticclassWebApiConfig{publicstaticvoidRegister(HttpConfiguration配置){config.MapHttpAttributeRoutes();config.Routes.MapHttpRoute(name:"DefaultApi",routeTemplate:"api/{controller}/{id}",defaults:new{id=RouteParameter.Optional});但通常你应该将参数作为附加参数传递。使用GET请求特别容易。这将适用于WebAPI1和2:publicclassItemsController:ApiController{publicstringGetItemById(intid){//Finditemhere...returnitem.ToString();}publicstringGetItemByNameAndId(stringname,intid){//在此处查找项目...returnitem.ToString();假设你有默认的映射配置,http://192.112.183.42:80/api/platypusItems/42GetItemById将映射到GetItemById和http://192.112.183.42:80/api/platypusItems/42?name=DuckbilledPlatypisAreGuysToo将映射到GetItemByNameAndId,因为WebAPI可以为GetItemById映射2个参数而不是1个参数。更多信息可以在MikeWasson关于WebAPI中的属性路由、路由以及操作选择和路由的文章中找到。以上是C#学习教程:Howtopass/receivemultipleargstotheRESTfulWebAPIGETmethod?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
