源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

用JSON做数据传输格式中的一些问题总结

  • 时间:2021-07-08 00:35 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:用JSON做数据传输格式中的一些问题总结
向客户端提供JSON数据的方式 [b]一. 用WCF提供Json数据[/b] 用WCF向客户端提供Json数据我们需要注意, A. 契约的定义, 在WebInvokeAttribute 或者 WebGetAttribute中的ResponseFormat设置为WebMessageForm.Json,
[url=http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html]HTTP Status Code[/url] , 不同的Code代表了不同的意义。因此我们的Web应用程序也应该是这样,根据不同的结果返回不同的 [url=http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html]HTTP Status Code[/url] , 比如200,代表服务端正确的返回,417代表我们期望的服务端异常,404,请求不存在等, 以及301我们的未授权。 在WCF环境下,我们首先要给每个方法添加 FaultContract, 如下: FaultContract(typeof(WebFaultException<WebErrorDetail>)) 其次我们要对异常做一些处理,让服务端能返回正确的HTTP Status Code.
[url=http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html]HTTP Status Code[/url] 是15???的一个错误代码, 但这个错误代码并不是我们正常的 [url=http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html]HTTP Status Code[/url] 范围. [b]异常处理的一个误区 [/b]最早的时候,由于没想到用这个方式处理,也是长久写代码犯下的一个弊病, 给每个方法加了一个固定的泛型返回值类型
[u]复制代码[/u] 代码如下:
[DataContract] public class TmResult { [DataMember] public bool Success { get; set; } [DataMember] public string ErrorMessage { get; set; } [DataMember] public string FullMessage { get; set; } [DataMember] public string CallStack { get; set; } } [DataContract] public class TmResult<T> : TmResult where T : class { [DataMember] public T Model { get; set; } }
每次返回都会有一个Success代表是否成功, ErrorMessage代表错误情况下的错误信息, 这样做的方式其实就是每次返回的 HTTP Status Code 都是200, 后来知道想到上面的解决办法之后,才觉得我们更本不需要搞的这么复杂,既然是Web, 那干吗不把程序写的更符合HTTP协议的定义, 那样岂不更简单。 所以在此也体会到各种标准的好处, 熟悉标准,熟悉编程模型及各种API, 我们的开发会更简单,更轻松. 以上都是按个人理解所写,有不对之处请指正.
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部