我已经编写了asp.net web-api项目,其中包含以下api-s:
控制器方法:Uri:
GetAllItems:/ api / items(works)
GetItem(int id)/ api / items / id(works) 和
GetListOfItem(IEnumerable< Items> items)/ api / items / items of items(不起作用)
该功能与此类似(不关心逻辑)
public IHttpActionResult GetByArray(IEnumerable<Book> bks)
{
var returnItems = items.Select(it => it).Where(it => it.Price < bks.ElementAt(0).Price || it.Price < bks.ElementAt(1).Price);
if (returnItems == null)
return NotFound();
else
{
return Ok(returnItems);
}
}
我正在使用邮递员发送请求并且以下请求正常
http://localhost:50336/api/items/
http://localhost:50336/api/items/100
但不是
http://localhost:50336/api/items/[{"Owner":"MySelf","Name":"C","Price":151},{"Owner":"Another","Name":"C++","Price":151}]
我应该如何格式化上一个请求,其中我有一个json格式的项目列表,以使其有效?
答案 0 :(得分:6)
您希望使用HttpPostAttribute
和FromBodyAttribute
:
[HttpPost]
public IHttpActionResult GetByArray([FromBody]IEnumerable<Book> bks)
{
}
然后发送json作为帖子正文。
你的邮差应该是这样的:
答案 1 :(得分:1)
专门针对
GetListOfItem(IEnumerable<Items> items)
[FromBody]绝对是最佳选择。
如果您使用原始类型,可以执行以下操作:
GetListOfItem([FromUri] int[] itemIds)
并发送请求为:
/GetListOfItem?itemIds=1&itemIds=2&itemIds=3