Skip to main content
 首页 » 编程设计

c#之如何构建 Web API Controller 并返回结果

2024年02月05日26jpfss

所以我在我的网络 API Controller 中组合了一组存储过程调用。现在我需要返回合并后的结果。 Javascript 就像这样简单:

var result = [{ 
     objectResult: value 
   },{ 
      arryResult1:[value] 
   },{ 
      arryResult2:[value] 
   }] 

但它需要一个包含 2 个列表和一个对象的类吗?然后将其作为列表返回?这是我有点迷路的地方。

  [HttpPost] 
    [Route("builderContact")] 
    public List<usp_get_builder_contact_data_Result> GetBuilderContact(parameter parameter) 
    { 
        object[] parameters = { parameter.company_id, parameter.subdivision_id }; 
 
        var builderContact =  db.Database.SqlQuery<usp_get_builder_contact_data_Result>("sandbox.usp_get_builder_contact_data {0},{1}", 
        parameters).First(); 
 
        var floorplanDataResult = db.Database.SqlQuery<usp_get_floorplan_data_Result>("sandbox.usp_get_floorplan_data {0},{1}", 
        parameters).ToList(); 
 
        var floorplanRelatedResult = db.Database.SqlQuery<usp_get_floorplan_related_sections_Result>("sandbox.usp_get_floorplan_related_sections {0},{1}", 
        parameters).ToList(); 
 
        return ?; 
    } 

更新答案

  [HttpPost] 
    [Route("bigEnchilada")] 
    public List<object> GetBuilderContact(parameter parameter) 
    { 
        object[] parameters = { parameter.company_id, parameter.subdivision_id }; 
 
        var builderContact = db.Database.SqlQuery<usp_get_builder_contact_data_Result>("sandbox.usp_get_builder_contact_data {0},{1}", 
        parameters).First(); 
 
        var floorplanDataResult = db.Database.SqlQuery<usp_get_floorplan_data_Result>("sandbox.usp_get_floorplan_data {0},{1}", 
        parameters).ToList(); 
 
        var floorplanRelatedResult = db.Database.SqlQuery<usp_get_floorplan_related_sections_Result>("sandbox.usp_get_floorplan_related_sections {0},{1}", 
        parameters).ToList(); 
 
        return (new object[] { 
                new object { builderContact = builderContact }, 
                new object { floorplanDataResult = floorplanDataResult }, 
                new object { floorplanRelatedResult = floorplanRelatedResult } 
            }).ToList(); 
    } 

请您参考如下方法:

如果您希望它完全匹配您在 Javascript 中的内容,则将返回类型更改为 List<object>并返回:

return new List<object> { 
    new { objectResult = builderContact }, 
    new { arryResult1 = floorplanDataResult }, 
    new { arryResult2 = floorplanRelatedResult } 
}; 

恕我直言,在这种情况下,以下模型会更适合(如果您可以更改它,那就是):

var result = { 
    objectResult: value, 
    arryResult1: [value], 
    arryResult2: [value] 
} 

在这种情况下,您可以将返回类型设置为 object并返回:

return new { 
    objectResult = builderContact, 
    arryResult1 = floorplanDataResult, 
    arryResult2 = floorplanRelatedResult 
}; 

稍微好一点,不是吗?