webApi之FromUri和FromBody区别
public Link GetLink([FromUri] FileRequest fileRequest) { if (ModelState.IsValid) { var xml = WebConfigurationManager.AppSettings["appDiscoveryXml"]; var wopiServer = WebConfigurationManager.AppSettings["appWopiServer"]; bool updateEnabled = false; bool.TryParse(WebConfigurationManager.AppSettings["updateEnabled"], out updateEnabled); WopiAppHelper wopiHelper = new WopiAppHelper(HostingEnvironment.MapPath(xml), updateEnabled); var result = wopiHelper.GetDocumentLink(wopiServer + fileRequest.name); var rv = new Link { Url = result }; return rv; } throw new ApplicationException("Invalid ModelState"); }
FileRequest类的定义
public class FileRequest { public string name { get; set; } public string SelectedItemId { get; set; } public IEnumerable<SelectListItem> Items { get; set; } }
这里的FromUri强制从url中读取FileRequest 对象,也就是说
当访问Http://localhost:80?name=eric&SelectedItemId={Guid.NewGuid()}
此处将自动转换Uri中的参数作为对象属性忽略form传递的数据
而使用FromBody将强制从FormData中读取数据
而非URL中获取参数~