Что должно быть возвращено из запроса Get в веб-API? - PullRequest
0 голосов
/ 12 марта 2019

Я пытаюсь вернуть список объектов, которые поступают из вызова базы данных, которые выглядят следующим образом:

public class ObjectA
{
    public int Id { get; set; }
    public string Name { get; set; }
    public ObjectB ObjB { get; set; }
}

public class ObjectB
{
    public int Id { get; set; }
    public string Field { get; set; }
}

Позвонить, чтобы получить элемент из базы данных в веб-интерфейсе

    [HttpGet]
    public List<ObjectA> GetObjects([FromUri] int id)
    {
        var objs= objectRepo.All.Where(x => x.Id== id).ToList();
        return objs;
    }

Вызов HTTPCLIENT

HttpClient client = new HttpClient(new HttpClientHandler { UseDefaultCredentials = true });
client.BaseAddress = new Uri("http://localhost:2478/api/controller/");
var result= client.GetAsync("GetObjects?id=" + 5);

Есть ли лучший способ настроить метод get?И как будут возвращенные результаты использоваться после извлечения с использованием httpclient?

Мне не нужно указывать объект B как объект, принадлежащий объекту A, но мне нужно поле из объекта B.

1 Ответ

1 голос
/ 12 марта 2019

Из комментариев:

Можно ли возвращать список таких объектов?

Если у вас есть контроль над API и если вам просто нужноObjectB из вашего ObjectA, тогда я бы предложил вам изменить API так, чтобы он возвращал только ObjectB с или даже Field из ObjectB.Например:

objectRepo.All.Where(x => x.Id == id).Select(x => x.ObjB).ToList();

, который вернет список ObjectB с.

, если параметр будет передан в Uri, а не из тела, если это возможно

Да, его можно передать в URI, используя [HttpGet("{id}")].

В конце концов вы получите:

[HttpGet("{id}")]
public List<ObjectB> GetObjects(int id)
{
    return objectRepo.All.Where(x => x.Id == id).Select(x => x.ObjB).ToList();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...