我有以下内容:
[HttpDelete]
public HttpResponseMessage DeleteFolder(int[] ids)
{
我试图用这个:
DELETE http://localhost:24144/api/folder/1483;
DELETE http://localhost:24144/api/folder/[1483]
但是这些在delete方法中都是null - 如何在不将数据放入正文的情况下发送数据(因为这是DELETE请求)?
我的路由有这个:
routes.MapHttpRoute(
name: "Folder",
routeTemplate: "api/folder/{id}",
defaults: new { controller = "Folder", id = RouteParameter.Optional }
);
答案 0 :(得分:12)
没关系,我发现了这个:
http://blog.codelab.co.nz/2012/10/16/passing-arrays-into-asp-net-web-api-as-parameters/
无法在SO上找到答案,所以我会留在这里。
从以上链接页面中摘录:
[HttpGet()]
public HttpResponseMessage FindByMembers([FromUri]Int32[] ids = null)
{
//Do stuff
return Request.CreateResponseMessage(HttpStatusCode.OK);
}
网址将为http://mywebsite/api/mycontroller/findbymembers/?ids=1&ids=2&ids=3。
答案 1 :(得分:0)
如果你想要像api/folder/[1,2,3]
这样的Uri,也可以在这里使用下面帖子答案中提到的相同参数绑定示例:
How to send an array via a URI using Attribute Routing in Web API?
注意:您需要更改以下行以查找“id”路由变量而不是“ids”,因为此处的路由模板为“api / folder / {id}”。< / p>
string idsAsString = actionContext.Request.GetRouteData().Values["id"].ToString();