限制在 Azure 表 JSON 响应中返回的对象属性
Limit object properties returned on Azure Tables JSON response
假设我有一个对象,当我在我的应用程序中时,我想获取它的所有属性,但我想限制从我的网络 API 发送回用户的一些属性。我的class如下:
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 Tables return 查询时,我最终会发送所有属性,包括 Timestamp
和 ETag
值。我不确定这是否是一个大问题,但我想知道如何限制发回的内容。例如:
object.PartitionKey
object.RowKey
object.Value2
我有一种方法可以将入站 JSON 有效负载直接反序列化到我的 NodeModel
,然后简单地 return 它:
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 关键字?
您可以 return 一个只有所需属性的匿名类型
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);
或者创建一个专用的 class 作为 DTO
NodeModel
应该保留在应用程序内部,并且只通过网络公开需要的内容。
假设我有一个对象,当我在我的应用程序中时,我想获取它的所有属性,但我想限制从我的网络 API 发送回用户的一些属性。我的class如下:
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 Tables return 查询时,我最终会发送所有属性,包括 Timestamp
和 ETag
值。我不确定这是否是一个大问题,但我想知道如何限制发回的内容。例如:
object.PartitionKey
object.RowKey
object.Value2
我有一种方法可以将入站 JSON 有效负载直接反序列化到我的 NodeModel
,然后简单地 return 它:
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 关键字?
您可以 return 一个只有所需属性的匿名类型
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);
或者创建一个专用的 class 作为 DTO
NodeModel
应该保留在应用程序内部,并且只通过网络公开需要的内容。