我正在尝试将控制器功能映射到我的网络API。
config.Routes.MapHttpRoute(
name: "RPCRoutingApiCaseStudy",
routeTemplate: "api/{controller}/{action}/{ServiceID}",
defaults: new { ServiceID = RouteParameter.Optional }
);
问题是,在我的控制器中,ServiceID应该是一个数组。如何设置我的映射以接受数组,它会是什么样子?很抱歉,如果这是一个显而易见的问题,但我对这些内容非常不熟悉,而且我正在努力学习。
我理解如何使用常规参数执行此操作,类似于int我键入url/api/controller/method/5
我只是不知道该为阵列做些什么。
答案 0 :(得分:0)
为了将复杂类型传递给Web API,您需要创建包含IENumerable类型的帮助器类,然后通过JSON封装将该对象传递到Web API。
以下示例接受POST方法并获取包含List的CustomListType对象。然后,您可以使用该对象执行您喜欢的操作。
public class ValuesController : ApiController
{
[System.Web.Http.AcceptVerbs("POST")]
public bool POST(CustomListType myList)
{
//Do stuff here
return true;
}
public class CustomListType
{
public List<int> myArray { get; set; }
}
}
将Advanced Rest Client用于Chrome;您可以通过发送对象来测试帖子:
{myArray:[0,1,2]}
请注意,因为CustomListType有一个名为“myArray”的成员,所以我们的JSON对象中也有“myArray”。
如果你在那里放一个调试行,你应该能够看到“myArray”的对象和值