具有 json 响应和服务状态的 WCF 休息服务
本文关键字:服务 WCF 状态 响应 具有 json | 更新日期: 2023-09-27 18:33:57
我有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; }
}
如果需要显示服务成功,如何获得该成功状态"成功":真他智者"成功":假。
最好更改响应协定。创建一个新的响应类,其成员成功和类别如下所示,并返回该类
[DataContract]
public class YourResponse
{
[DataMember]
public bool Success { get; set; }
[DataMember]
public categories Categories{ get; set; }
}
可能的变体:
[OperationContract]
[WebInvoke(
BodyStyle = WebMessageBodyStyle.Bare, //or WrappedRequest
Method = "GET",
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/somemethod?param1={param1}¶m2={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);
}