pri*_*kar 9 c# asp.net-web-api
我有一个模特说
public class Device
{
public int DeviceId { get; set; }
public string DeviceTokenIds { get; set; }
public byte[] Data { get; set; }
public string FilePwd { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在我有一个ASP.net Web API,其中有一个POST方法
[HttpPost]
[Route("AddDeviceRegistrations")]
public void InsertDeviceRegistrations(Device device)
Run Code Online (Sandbox Code Playgroud)
如果我公开WebAPI,显然所有字段都可用,例如
{
"DeviceId": 1,
"DeviceTokenIds": "sample string 2",
"Data": "QEBA",
"FilePwd": "sample string 3"
}
Run Code Online (Sandbox Code Playgroud)
我想要的是,每当我暴露我的WebAPI时,DeviceID都不应该暴露.我的意思是我在寻找
{
"DeviceTokenIds": "sample string 2",
"Data": "QEBA",
"FilePwd": "sample string 3"
}
Run Code Online (Sandbox Code Playgroud)
可能吗?如果是这样的话?
我可以通过更改函数签名来解决问题
public void InsertDeviceRegistrations(string deviceTokenIds, byte[] data, string FilePwd).
Run Code Online (Sandbox Code Playgroud)
但我想知道它是否可能?如果是这样,怎么样?
提前致谢.
pri*_*kar 24
我才想通了
[IgnoreDataMember]
public int DeviceId { get; set; }
Run Code Online (Sandbox Code Playgroud)
命名空间是 System.Runtime.Serialization
更多信息IgnoreDataMemberAttribute类
今天学了点儿新东西.
谢谢大家.
对所有 GET/POST 请求使用视图模型是一种很好的做法。在您的情况下,您应该创建用于在 POST 中接收数据的类:
public class InsertDeviceViewModel
{
public string DeviceTokenIds { get; set; }
public byte[] Data { get; set; }
public string FilePwd { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后将数据从视图模型映射到您的业务模型Device。
小智 5
如果您正在使用Newtonsoft.Json
您可以像这样隐藏属性:
public class Product
{
[JsonIgnore]
public string internalID { get; set; };
public string sku { get; set; };
public string productName { get; set; };
}
Run Code Online (Sandbox Code Playgroud)
并且您的序列化响应将不包含internalID 属性。
| 归档时间: |
|
| 查看次数: |
9886 次 |
| 最近记录: |