Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net web API中的Get请求应该返回什么?_.net_Asp.net Mvc_Httpclient - Fatal编程技术网

.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();
}