REST服务如何传递JSON作为参数
本文关键字:参数 JSON 何传递 服务 REST | 更新日期: 2023-09-27 18:06:59
我创建了一个WCF REST API:
[OperationContract]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.WrappedRequest,
ResponseFormat = WebMessageFormat.Json, UriTemplate = "/checkEmail")]
RestResponse<bool> checkEmail(string EmailId);
JSON请求是:
{ "EmailId" :"youremail@yahoo.com" }
按预期工作。但经过一些代码审查更改后,我将method中的参数更改为
checkEmail(string emailId);
。改成驼峰箱了。我如何修改我的代码使用相同的JSON请求,即API调用应保持相同
{ "EmailId" :"youremail@yahoo.com" }
这可能适合您。在我做的一个有限的测试中,它是有效的。我创建了一个有两个属性的类:
[DataContract]
public class EmailParms
{
[DataMember]
[JsonProperty(DefaultValueHandling=DefaultValueHandling.IgnoreAndPopulate)]
public virtual string EmailId { get; set; }
[DataMember]
[JsonProperty(DefaultValueHandling=DefaultValueHandling.IgnoreAndPopulate)]
public virtual string emailId { get; set; }
}
JsonPropertyAttribute
是Json.NET的一部分。
然后把checkEmail
改成:
RestResponse<bool> checkEmail(Emailparms emailParms);
IgnoreAndPopulate
基本上是对json数据中缺失的属性进行反序列化,并给它属性的默认值。
现在,在你的方法中,你只需要检查emailParms
中的emailId
和EmailId
的值,并决定使用哪个。
在我的测试中,它适用于以下任何情况:
{ "EmailId" :"youremail@yahoo.com" }
{ "emailId" :"youremail@yahoo.com" }
{ "EmailId" :"youremail@yahoo.com", "emailId" :"youremail@yahoo.com" }