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; }
}

JsonPropertyAttributeJson.NET 的一部分。

然后您将 checkEmail 更改为:

RestResponse<bool> checkEmail(Emailparms emailParms);

IgnoreAndPopulate 基本上反序列化 json 数据中缺失的 属性,并赋予它 属性 的默认值。

现在,在您的方法中,您只需检查 emailParmsemailIdEmailId 的值并决定使用哪个。

在我的测试中,它适用于以下任何一项:

{ "EmailId" :"youremail@yahoo.com" }
{ "emailId" :"youremail@yahoo.com" }
{ "EmailId" :"youremail@yahoo.com", "emailId" :"youremail@yahoo.com" }