【问题标题】:Wcf rest service with json response and service status带有 json 响应和服务状态的 Wcf 休息服务
【发布时间】:2016-02-10 10:43:46
【问题描述】:

我有 WCF REST 服务返回类似的 JSON 响应

{
    "categories": [{
        "category_id": "10",
        "name": "Grocery",
        "freeQnty":"0",
        "prdcost":"100"
    }, {
        "category_id": "20",
        "name": "Beverages",
        "freeQnty":"1",
        "prdcost":"20"  
    }]
}

但我想要响应服务状态。

{
    "success": true,
    "categories": [{
        "category_id": "10",
        "name": "Grocery",
        "freeQnty":"0",
        "prdcost":"100"
    }, {
        "category_id": "20",
        "name": "Beverages",
        "freeQnty":"1",
        "prdcost":"20"  
    }]
}

这是我的服务。

[OperationContract]
        [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "json/GetCustomerDetails/{customerid}")]
        Merchant GetCustomerDetails(string customerid);


[DataContract]
    public class categories
    {
        [DataMember]
        public int category_id{ get; set; }

        [DataMember]
        public string name { get; set; }

        [DataMember]
        public int freeQnty{ get; set; }

        [DataMember]
        public int prdcost { get; set; }
    }

如果我需要显示服务成功,如何获得该成功状态 “成功”:真正的其他方面 “成功”:假。

【问题讨论】:

标签: c# json web-services wcf rest


【解决方案1】:

最好更改您的响应合同。 创建一个新的响应类,其成员成功和类别如下并返回

  [DataContract]
  public class YourResponse
{
    [DataMember]
    public bool Success { get; set; }

    [DataMember]
    public categories Categories{ get; set; }
}

【讨论】:

    【解决方案2】:

    可能的变体:

    [OperationContract]
    [WebInvoke(
    BodyStyle = WebMessageBodyStyle.Bare, //or WrappedRequest
    Method = "GET",
    ResponseFormat = WebMessageFormat.Json,     
    UriTemplate = "/somemethod?param1={param1}&param2={param2}")]
    System.ServiceModel.Channels.Message SomeMethod(string param1, string param2)
    {
        // use JSON.NET to add missing properties etc: 
        var jObject = JObject.FromObject(yourObject); 
        jObject["success"] = true; 
        var json = jObject.ToString();
    
        WebOperationContext.Current.OutgoingResponse.ContentType = "application/json";
        return WebOperationContext.Current.CreateTextResponse(json);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多