.net web API中的Get请求应该返回什么?
我试图返回一个来自数据库调用的对象列表,如下所示:.net web API中的Get请求应该返回什么?,.net,asp.net-mvc,httpclient,.net,Asp.net Mvc,Httpclient,我试图返回一个来自数据库调用的对象列表,如下所示: 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;
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;
}
有没有更好的方法来设置get方法?一旦使用httpclient检索到返回的结果,将如何使用
我不需要将对象B作为属于对象A的对象,但我需要对象B中的字段。来自注释:
可以返回这样的对象列表吗
如果您可以控制API,并且只需要ObjectA中的ObjectB,那么我建议您将API更改为只返回ObjectB,甚至只返回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();
}
你说设置get方法是什么意思?@meJustAndrew我想我的意思是,返回这样的对象列表可以吗?如果可能的话,参数应该传递到Uri中,而不是从主体中传递。在core中返回IActionResult或ActionResult有好处;检查:我已经回答了您的问题,顺便说一下,您缺少ObjectA中ObjectB属性的名称,我将编辑您的问题以添加它。
[HttpGet("{id}")]
public List<ObjectB> GetObjects(int id)
{
return objectRepo.All.Where(x => x.Id == id).Select(x => x.ObjB).ToList();
}