我正在尝试返回来自数据库调用的对象列表,如下所示:
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; }
}
调用以从Web api中的数据库中获取项目
[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的字段。
答案 0 :(得分:1)
从评论中:
可以返回这样的对象列表吗?
如果您可以控制API,并且只需要ObjectB
中的ObjectA
,那么建议您更改API以仅返回ObjectB
甚至返回Field
中的ObjectB
。例如:
objectRepo.All.Where(x => x.Id == id).Select(x => x.ObjB).ToList();
这将返回ObjectB
的列表。
如果可以的话,应将参数传递到Uri中,而不是从正文中传递
是的,可以使用[HttpGet("{id}")]
在URI中进行传递。
最后,您将拥有:
[HttpGet("{id}")]
public List<ObjectB> GetObjects(int id)
{
return objectRepo.All.Where(x => x.Id == id).Select(x => x.ObjB).ToList();
}