REST服务如何为参数传递JSON
REST service how to pass JSON for parameters
我创建了一个 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" }
一切正常。但是经过一些代码审查更改后,我将方法中的参数更改为
checkEmail(string emailId);
即将其更改为骆驼案例。如何修改我的代码以使用相同的 JSON 请求,即 API 调用应保持不变
{ "EmailId" :"youremail@yahoo.com" }
这可能对你有用。它在我所做的有限测试中有效。我创建了一个 class,它有两个属性:
[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" }
我创建了一个 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" }
一切正常。但是经过一些代码审查更改后,我将方法中的参数更改为
checkEmail(string emailId);
即将其更改为骆驼案例。如何修改我的代码以使用相同的 JSON 请求,即 API 调用应保持不变
{ "EmailId" :"youremail@yahoo.com" }
这可能对你有用。它在我所做的有限测试中有效。我创建了一个 class,它有两个属性:
[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" }