0
我传递这个URI到我的Web API服务器:[FromBody]和[FromUri]是否相互排斥?
http://localhost:28642/api/InventoryItems/PostInventoryItem?serialNum=8675309e9&ID=147&pksize=2&Description=juanValdes&vendor_id=venderado&UnitCost=2.58&UnitList=3.82&OpenQty=25.70&UPC=12349&dept=139&subdept=89&upc_pack_size=24&vendor_item=popTartz&crv_id=157
该控制器代码(用 “[FromBody]” 注释)不工作:
public void PostInventoryItem([FromBody] string serialNum, [FromUri] InventoryItem ii)
{
string serNum = serialNum;
_inventoryItemRepository.PostInventoryItem(serNum,
ii.ID, ii.pksize, ii.Description, ii.vendor_id, ii.UnitCost, ii.UnitList, ii.OpenQty,
ii.UPC, ii.dept, ii.subdept, ii.upc_pack_size, ii.vendor_item, ii.crv_id);
}
...(SERIALNUM是空值);但这种(不带 “[FromBody]” 注释)的作用:
public void PostInventoryItem(string serialNum, [FromUri] InventoryItem ii)
{
string serNum = serialNum;
_inventoryItemRepository.PostInventoryItem(serNum,
ii.ID, ii.pksize, ii.Description, ii.vendor_id, ii.UnitCost, ii.UnitList, ii.OpenQty,
ii.UPC, ii.dept, ii.subdept, ii.upc_pack_size, ii.vendor_item, ii.crv_id);
}
(SERIALNUM是预期的 “8675309e9”)为什么?人们会认为更具体的版本会起作用,但是,虽然它编译了,但serialNum对于第一个片段是空的。
我知道您不能在一种方法中使用两个“[FromBody]”注释,如here所示,但所有其他注释都不允许使用吗?
好吧,我很困惑/没有考虑身体/尿液分离。我不知道“身体”是什么,我想 - 我怎么能传递一些东西(我猜是被认为是“身体”),与URI中传递的东西分开?所以现在我想知道是否可以使用两个[FromUri]注释;然而,它是按原样工作的(serialNum上没有注释,而class/object是[FromUri],所以没什么大不了的,我只是主要好奇。 –
这里的“body”意味着你的请求的主体。默认情况下,绑定器将查看您的查询字符串,因此您不需要使用FromUri进行修饰,除非要像第一个场景中那样绑定来自不同位置的数据 –