Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.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
如何配置ASP Web API中返回的属性?_Api_Asp.net Web Api_Json.net - Fatal编程技术网

如何配置ASP Web API中返回的属性?

如何配置ASP Web API中返回的属性?,api,asp.net-web-api,json.net,Api,Asp.net Web Api,Json.net,几个RESTful API为调用者提供了返回数据量的选项,通常通过querystring参数(例如stackexchange的filter参数)实现 我希望至少为返回的数据量提供某种程度的可配置性,可能不一定要达到同样的灵活性(尽管我对此没有异议),但要达到这样的程度,拥有单个viewmodels将不是一个可行的解决方案 然而,我正努力在WebAPI中找到一个好的点来添加某种属性白/黑列表。执行此操作的适当方法是什么?使用单个DTO返回字段子集的一种方法是为DTO中的可选属性提供可为空的类型 [

几个RESTful API为调用者提供了返回数据量的选项,通常通过querystring参数(例如stackexchange的filter参数)实现

我希望至少为返回的数据量提供某种程度的可配置性,可能不一定要达到同样的灵活性(尽管我对此没有异议),但要达到这样的程度,拥有单个viewmodels将不是一个可行的解决方案


然而,我正努力在WebAPI中找到一个好的点来添加某种属性白/黑列表。执行此操作的适当方法是什么?

使用单个DTO返回字段子集的一种方法是为DTO中的可选属性提供可为空的类型

[DataContract]
public class Dude
{
    [DataMember]
    public int Id { get; set; }

    [DataMember(EmitDefaultValue = false)]
    public string FirstName { get; set; }

    [DataMember(EmitDefaultValue = false)]
    public string MiddleName { get; set; }

    [DataMember(EmitDefaultValue = false)]
    public string LastName { get; set; }

    [DataMember(EmitDefaultValue = false)]
    public int? IQ { get; set; }
}
您需要获取客户机希望在响应中看到的字段列表,并在返回的数据实例中只填充这些字段,如下所示

return new Dude() { Id = 123, FirstName = "Johnny" };
这将发送类似于JSON的
{“Id”:123,“FirstName”:“Johnny”}
。当另一个客户端请求say
LastName
时,您将返回
newdude(){Id=123,LastName=“Bravo”}和JSON将是
{“Id”:123,“LastName”:“Bravo”}

这将适用于XML和JSON。如果只支持JSON,则不需要应用属性。只需要指示JSON.NET忽略空值

config.Formatters.JsonFormatter.SerializerSettings =
        new JsonSerializerSettings
        {
            NullValueHandling = NullValueHandling.Ignore
        };

如何获取字段列表的最后一部分将取决于您的API设计。您可能可以使用操作筛选器从请求中获取这些标准字段,并使用它从持久性存储中获取数据。

使用单个DTO返回字段子集的一种方法是为DTO中的可选属性提供可为空的类型

[DataContract]
public class Dude
{
    [DataMember]
    public int Id { get; set; }

    [DataMember(EmitDefaultValue = false)]
    public string FirstName { get; set; }

    [DataMember(EmitDefaultValue = false)]
    public string MiddleName { get; set; }

    [DataMember(EmitDefaultValue = false)]
    public string LastName { get; set; }

    [DataMember(EmitDefaultValue = false)]
    public int? IQ { get; set; }
}
您需要获取客户机希望在响应中看到的字段列表,并在返回的数据实例中只填充这些字段,如下所示

return new Dude() { Id = 123, FirstName = "Johnny" };
这将发送类似于JSON的
{“Id”:123,“FirstName”:“Johnny”}
。当另一个客户端请求say
LastName
时,您将返回
newdude(){Id=123,LastName=“Bravo”}和JSON将是
{“Id”:123,“LastName”:“Bravo”}

这将适用于XML和JSON。如果只支持JSON,则不需要应用属性。只需要指示JSON.NET忽略空值

config.Formatters.JsonFormatter.SerializerSettings =
        new JsonSerializerSettings
        {
            NullValueHandling = NullValueHandling.Ignore
        };
如何获取字段列表的最后一部分将取决于您的API设计。您可以使用操作过滤器从请求中获取这些标准字段,并使用它从持久性存储中获取数据