【问题标题】:choosing return values from .Net MVC API从 .Net MVC API 中选择返回值
【发布时间】: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&lt;string&gt; 添加到传递的rtnValue 变量中,但是我不确定如何将值传递给API,直觉告诉我url 看起来像/api/property/load/1/["Id", "Energy"] 但是这会返回一个错误。

任何关于如何更好地优化此代码的帮助都会很棒。

【问题讨论】:

  • 与其说是如何返回。这实际上恢复得很好。它允许用户选择从数据库返回的值
  • 我的错误。我不知道有任何不涉及反思的方法。您可以将反射分配给辅助方法并进行一些缓存以显着提高性能,但除此之外,我所知道的唯一其他方法是动态生成/编译 C# 类并使用它来代替更多的是一团糟。

标签: c# .net asp.net-mvc api model-view-controller


【解决方案1】:

这个呢……

API 格式:

/api/property/load/1?rtnValue[0]=test1&rtnValue[1]=test2

控制器方法:

public IHttpActionResult load(int id, [FromUri] List<String> rtnValue)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-24
    相关资源
    最近更新 更多