趣谈网络协议
刘超
前网易研究院云计算技术部首席架构师
128845 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 51 讲
趣谈网络协议
15
15
1.0x
00:00/00:00
登录|注册

第34讲 | 基于JSON的RESTful接口协议:我不关心过程,请给我结果

上一节我们讲了基于 XML 的 SOAP 协议,SOAP 的 S 是啥意思来着?是 Simple,但是好像一点儿都不简单啊!
你会发现,对于 SOAP 来讲,无论 XML 中调用的是什么函数,多是通过 HTTP 的 POST 方法发送的。但是咱们原来学 HTTP 的时候,我们知道 HTTP 除了 POST,还有 PUT、DELETE、GET 等方法,这些也可以代表一个个动作,而且基本满足增、删、查、改的需求,比如增是 POST,删是 DELETE,查是 GET,改是 PUT。

传输协议问题

对于 SOAP 来讲,比如我创建一个订单,用 POST,在 XML 里面写明动作是 CreateOrder;删除一个订单,还是用 POST,在 XML 里面写明了动作是 DeleteOrder。其实创建订单完全可以使用 POST 动作,然后在 XML 里面放一个订单
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《趣谈网络协议》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(31)

  • 最新
  • 精选
  • 扬~
    文本传输最终都会转化为二进制流啊,为什么文本要比二进制rpc占用带宽?

    作者回复: 数字2如果用int传输用几个bit,如果是字符串呢?

    3
    16
  • 起风了001
    文本传输最终都会转化为二进制流啊,为什么文本要比二进制rpc占用带宽?  1 2018-11-10 作者回复: 数字2如果用int传输用几个bit,如果是字符串呢? 这个有点疑问, 用int传输需要32或者64位; 字符串的话, 看编码, 如果是utf8编码的话, 还是1个字节8bit即可表示.....

    作者回复: int当然不会用32位编码呀

    3
    6
  • jonhey
    看到这里,强烈建议老刘基于此教程,丰富一下内容,写本书,估计能成为网络、云计算、网络编程、微服务领域集大成的经典教材

    作者回复: 不敢不敢

    4
  • leohuachao
    我觉得RESTFul架构流行,也得益于前端框架的丰富吧,要不然维护客户端会话也够难实现

    作者回复: 是的,简单

    4
  • 葱本
    问个问题,购买这个动作,是告诉服务端减一,难受没有办法做到只告诉服务端结果吧

    作者回复: 购买可不止减库存,服务端可以有个状态机的,要不然重复购买怎么办。

    3
  • Geek_f6f02b
    RESTful 模型如何实现幂等,这个表示没有想通,就是好比之前SOAP,你告诉我减库存,我就执行减,减后还剩多少,是否成功返回,但是如果是客户端直接减去库存,然后告诉我说,将库存设置成这么多,服务端只要告诉我是否成功,并发了怎么解决,多个人同时请求,如果库存为10,5个请求都是减1,如果前面失败,但是后面成功,前面分别说将库存设置成9、8、7、6,都失败了,最后一个说设置成5成功了,感觉会有问题。

    作者回复: 你这种减是有问题的,并发怎么办,后面5个只有一个成功是对的,其他还可以重试。

    2
    2
  • Yayu
    JSON-RESTful 算是一种协议吗?把它理解成一种规范会更好吧?

    作者回复: 没必要纠结吧

    1
  • 随心而至
    底子好,学起什么来都快

    作者回复: 是的

  • 起风了001
    我们平时设计的api, 比如购买东西, 是传的数量, 而不是传库存剩余多少呀. 传数量应该是主流才是, 所以传数量不是RESTful模式吗?

    作者回复: 对外接口是,内部实现不是

  • feifei
    在讨论 RESTful 模型的时候,举了一个库存的例子,但是这种方法有很大问题,那你知道为什么要这样设计吗? 此方法的问题在于,不是解决问题,而是将数据状态进行了转移,将状态交给存储,这样业务将可以无状态化运行,这种设计可以很好的解决扩展的问题,因为无状态,可以进行负载均衡!使用集群化来解决单机的问题。 基于文本的 RPC 虽然解决了二进制的问题,但是它本身也有问题,你能举出一些例子吗? 1,效率问题,程序与文本之间转换效率低,因而不适合内部大数据交换,因为文本利用阅读,对外采用较好 2,相比于二进制rpc,传输需要的带宽更大,二进制的rpc因为可以使用专用的客户短和服务器代码,可以更好的压缩数据,以提供更大的吞吐量
    55
收起评论
显示
设置
留言
31
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部