【发布时间】:2015-12-05 04:35:51
【问题描述】:
我一直在 .Net 中使用 Infusionsoft 的 API 系统,我发现 "selectedFields" 功能很有意义。
我目前正在制作一个 API 系统,并希望在其中构建类似的功能。
我确定它有一个名字,但对于我的生活,我无法弄清楚要搜索什么才能获得一些工作示例。
我唯一的解决方案如下所示
Data.DataDataContext _db = new Data.DataDataContext();
[HttpGet]
public IHttpActionResult load(int id, [FromUri] string rtnValue)
{
var property = _db.PROPERTies.Where(p => p.id == id);
if (!property.Any())
return NotFound();
var returnProperty = new Dictionary<string, string>();
var prop = property.FirstOrDefault();
if (rtnValue.Contains("Id")) returnProperty.Add("Id", prop.id.ToString());
if (rtnValue.Contains("Energy")) returnProperty.Add("Energy", prop.energy.ToString());
return Ok(returnProperty);
}
转到网址/api/property/load/1/"Id","Energy".... 会返回我所期望的[{ "Id": "1", "Energy": "45" }],所以它似乎在这方面有效。这更像是对我的代码的优化。我确信我可以以更好的方式做到这一点。
理想情况下,我想将List<string> 添加到传递的rtnValue 变量中,但是我不确定如何将值传递给API,直觉告诉我url 看起来像/api/property/load/1/["Id", "Energy"] 但是这会返回一个错误。
任何关于如何更好地优化此代码的帮助都会很棒。
【问题讨论】:
-
与其说是如何返回。这实际上恢复得很好。它允许用户选择从数据库返回的值
-
我的错误。我不知道有任何不涉及反思的方法。您可以将反射分配给辅助方法并进行一些缓存以显着提高性能,但除此之外,我所知道的唯一其他方法是动态生成/编译 C# 类并使用它来代替更多的是一团糟。
标签: c# .net asp.net-mvc api model-view-controller