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

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

基于文本的RPC问题
库存设计问题
服务消费方
服务提供方
注册中心
Eureka
横向扩展
无状态服务
面向资源
架构模式
并发问题
复杂
思考题
服务发现问题
RESTful
SOAP

该思维导图由 AI 生成,仅供参考

上一节我们讲了基于 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
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文通过对比SOAP协议和RESTful格式的API,强调了RESTful的灵活性和性能优势。SOAP协议虽然基于XML,但其复杂性和并发性能不佳,而RESTful格式的API采用HTTP的方法,更灵活地满足了增、删、查、改的需求。作者认为,使用RESTful格式的API可以简化SOAP协议,提高并发性能。文章通过具体示例展示了如何将SOAP格式的请求转换为RESTful格式的请求,使得请求更加简洁明了。此外,文章还探讨了RESTful API的设计理念,强调了无状态化、面向资源的、幂等的、横向扩展的、可缓存的特点。另外,文章还提到了服务发现问题,介绍了基于RESTful API的跨系统调用框架Spring Cloud中的Eureka组件,以及其实现原理和应用场景。总的来说,本文对于想要了解SOAP协议和RESTful格式的API的读者来说,是一篇值得一读的文章。文章内容丰富,涉及技术细节,对于理解和应用RESTful API具有一定的指导意义。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《趣谈网络协议》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(31)

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

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

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

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

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

    作者回复: 不敢不敢

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

    作者回复: 是的,简单

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

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

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

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

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

    作者回复: 没必要纠结吧

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

    作者回复: 是的

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

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

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