抱歉,我无法很好地标题。
关键是,我在C#.NET的Web API实体框架中定义了一个模型model1
。
说模型有以下字段
field1
,field2
,field3
,field4
,field5
web api方法返回此模型。我从Web应用程序和Android应用程序调用web api,一切正常,没问题。
问题是,在我的Android应用程序中,我只需要field1,field2&字段3。
我想使用相同的模型,但只返回必填字段,忽略其余字段以优化移动设备上的数据消耗。
我有办法做到这一点。是的,我可以创建另一个只包含必填字段的模型model2
,并将值分配给model2并返回它,但我不想创建另一个模型。
没有创建另一个模型的原因是我几乎在实时应用程序中 47个字段和各种方法将仅返回这些字段的子集,并且必须返回其中的所有47个字段。因此,维护成为一个问题。
希望我的要求合理,会请求一些帮助。
谢谢。答案 0 :(得分:1)
如果您不想创建另一个简化模型,那么Web api控制器操作的一个选项是返回对象类型。
在控制器的最终返回语句中,您可以从model1类中进行匿名投影,并仅返回选定的字段。
public class MyController : ApiController
{
public object SomeGetAction()
{
var model1 = GetModel1();
if (android)
{
// send back partial payload
return new { field1 = model1.field1, field3 = model1.field3 };
}
// for clients needing full payload.
return model1;
}
}
这可确保您通过线路发送的数据减少。但请注意,您仍将从数据库中提取所有字段或任何后端源。
另一种选择是返回Dictionary 无论哪种方式,你都会失去字段名称的强类型,而没有强大的模型2。