【问题标题】:Limit object properties returned on Azure Tables JSON response限制 Azure 表 JSON 响应中返回的对象属性
【发布时间】:2018-09-27 01:46:33
【问题描述】:

假设我有一个对象,我想在我的应用程序中获取所有属性,但我想限制一些从我的 Web API 发送回用户的属性。我的班级如下:

public class NodeModel : TableEntity
{
    public NodeModel(string PK, string RK)
    {
        this.PartitionKey = PK;
        this.RowKey = RK;
    }

    public NodeModel() {}

    public string Value1 { get; set; }
    public string Value2 { get; set; }

}

所以当我在我的应用程序中使用NodeModel 时,我想访问:

object.PartitionKey
object.RowKey
object.Value1
object.Value2

当我从 Azure 表返回查询时,我最终会发送所有属性,包括 TimestampETag 值。我不确定这是否很重要,但我想知道如何限制发回的内容。例如:

object.PartitionKey
object.RowKey
object.Value2

我有一个方法可以将入站 JSON 负载直接反序列化到我的NodeModel,然后简单地返回它:

string data = await req.Content.ReadAsStringAsync();
NodeModel nodeData = Newtonsoft.Json.JsonConvert.DeserializeObject<NodeModel>(data);
return req.CreateResponse(HttpStatusCode.OK, nodeData)

除了创建NodeModel 类型的新对象,然后为每个对象手动设置属性之外,是否有更好的方法给定 getter/setter 或 public/private 关键字?

【问题讨论】:

    标签: c# class azure-table-storage


    【解决方案1】:

    你可以返回一个只包含所需属性的匿名类型

    string data = await req.Content.ReadAsStringAsync();
    NodeModel nodeData = Newtonsoft.Json.JsonConvert.DeserializeObject<NodeModel>(data);
    var responseData = new {
        nodeData.PartitionKey,
        nodeData.RowKey,
        nodeData.Value2
    };
    return req.CreateResponse(HttpStatusCode.OK, responseData);
    

    或者创建一个专门的类来充当 DTO

    NodeModel 应保留在应用程序内部,并且仅通过网络公开所需的内容。

    【讨论】:

      猜你喜欢
      • 2017-04-05
      • 1970-01-01
      • 2018-04-06
      • 2015-09-25
      • 1970-01-01
      • 2019-06-30
      • 1970-01-01
      • 1970-01-01
      • 2021-01-16
      相关资源
      最近更新 更多