2015-09-09 5 views
1

Я работал с системой API Infusionsoft в .Net, и я нахожу функциональность "selectedFields", чтобы сделать большой смысл.выбор возвращаемых значений из .Net MVC API

Я в настоящее время делаю систему 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); 
} 

Переход к URL /api/property/load/1/"Id","Energy".... возвращает то, что я ожидал бы [{ "Id": "1", "Energy": "45" }] так это, кажется, работает в этом направлении. Это скорее оптимизация моего кода. Я уверен, что могу сделать это лучше.

В идеале я хочу добавить List<string> к пройденному rtnValue переменной, но тогда я не знаю, как я могу передать значения в API тогда, инстинкт подсказывает мне URL будет выглядеть /api/property/load/1/["Id", "Energy"], но это возвращается с ошибка.

Любая помощь в том, как лучше оптимизировать этот код, была бы удивительной. Формат

+0

Это не так много, как вернуть. На самом деле это нормально. Это позволяет пользователю выбирать значения, которые возвращаются из базы данных. –

+0

Моя ошибка. Я не знаю, как это сделать, что не будет включать в себя размышления. Вы можете скомпоновать рефлексию на вспомогательный метод и сделать некоторое кэширование, чтобы значительно повысить производительность, но, кроме того, единственным другим способом, который я знаю, было бы создание/компиляция класса C# на лету и использование этого вместо этого, больше беспорядка. – Basic

ответ

0

Что об этом ...

API:

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

Способ управления:

public IHttpActionResult load(int id, [FromUri] List<String> rtnValue) 
Смежные вопросы