restFul的优缺点以及思考

这篇具有很好参考价值的文章主要介绍了restFul的优缺点以及思考。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

常用经验

  • 在HTTP中,我们要通过 URL 进行资源的定位

    比如:

    要取 id=888 的用户信息,我们就向/user/{id} 这个路径发送请求,

    要取 id=888 的用户的订单列表,我们就向/user/{id}/orders 这个路径发送请求

  • 在HTTP 中,DELETE、PUT、GET请求应该是幂等的,而POST 则不是幂等的。所谓“幂等”指的是:对于一个接口采用同样的参数请求一次和请求多次的结果是一致的,不会因为多次请求而产生副作用

  • 在HTTP中,GET请求的响应是可以被缓存的,而DELETE、PUT、POST请求的响应是不可以被缓存的。客户端、网关等可以根据情况对 GET 请求的响应进行缓存,从而提升性能

  • 在HTTP中,服务器端要通过状态码来反映资源获取的结果

    比如:

    客户端要获取id-8的用户,如果要获取的用户不存在,则服务器返回的状态码为 404,而如果当前客户端没有权限获取这个用户,服务器返回的状态码为 403。再如,对于新增用户请求,如果新增成功,服务器返回的状态码为 201

优点

  • 所有的资源都尽量通过URL来表示,URL的语义性更清晰

  • 对所有类型资源的新增、删除、修改、查询操作都统一为向资源发送POST、DELETE.、PUT、GET 请求,接口统一且具有自描述性,减少了开发人员对接口文档的依赖性

  • 对于 GET、PUT、DELETE 等幂等的操作,网关、网络请求组件等可以对失败的请求自动重试

  • 网关等可以对 GET 请求进行缓存,能够提升系统的访问速度,而且降低服务器的压力

  • 通过HTTP状态码反映服务器端的处理结果,能够统一错误码,避免自定义错误码带来的不统一的问题

    户端也可以根据错误码进行统一处理,比如对于 403 状态码,客户端统一提示用户去登录

  • 网关等系统可以根据状态码来分析系统的访问数据,比如可以根据 HTTP状态码分析有多少成功的请求,有多少失败的请求

缺点

  • 真实系统中的资源非常复杂,很难清晰地进行资源的划分
  • 真实系统中的业务很复杂,并不是所有的操作都能简单地对应到PUT、GET、DELETE、POST上
  • 真实系统是在不断进化的,一个操作最开始的时候被设计为幂等的 PUT,但是后来的版本又修改了逻辑,可能该操作就变成了不幂等的。如果调用者继续对这个操作进行重试可能会有副作用
  • 在 Restful 中,资源尽量通过 URL来定位,要尽量避免使用 QueryString 及请求报文体传递数据
  • HTTP状态码的个数是有限的,特别是用于表示业务相关的错误码主要在 4xx状态码段中,而业务系统中的错误非常复杂,仅通过 HTTP状态码来反映错误有时候会无法满足要求
  • 有的客户端是不支持 PUT、DELETE 请求的。例如: 旧版本的程序

总结

REST 概念是用来指导我们设计接口的,而不是给开发带来麻烦的,它只是一个参考的风格,并不是一个必须遵守的规范,不能因为要遵守Restful 风格而影响开发进度及系统的稳定。项目开发的时候,需要根据项目特点、公司人员等多方面情况,确定一个符合项目情况的定制版 Restful 规范。文章来源地址https://www.toymoban.com/news/detail-684871.html

到了这里,关于restFul的优缺点以及思考的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • TCP/UDP区别以及优缺点详解

    TCP/IP协议的具体含义 TCP协议位于传输层,IP协议位于网络层。 TCP/IP协议很多情况下只是利用IP进行通信时所必须用到的协议群的统称。具体来说,IP或ICMP、TCP和UDP、TELNET或FTP,以及FTTP等都属于TCP/IP协议,有时候也称TCP/IP为网络协议群。 TCP、UDP协议的区别: 注:可从以下几个方

    2024年02月04日
    浏览(58)
  • 四大常用MQ的优缺点和应用场景选择

      官网地址 :http://activemq.apache.org/ - 官网介绍 Apache ActiveMQ是最流行的开源、多协议、基于Java的消息代理。它支持行业标准协议,因此用户可以从多种语言和平台的客户端选择中获益。从JavaScript、C、C++、Python、.NET等多个客户端连接。使用无处不在的AMQP协议集成多平台应用程

    2023年04月22日
    浏览(43)
  • Unity获取物体组件的所有方法以及优缺点

    1.GetComponent(): 获取物体上的指定组件 T,如果物体上不存在该组件,则返回 null。 优点:简单易用,可以快速获取指定组件的实例,方便直接操作组件。 缺点:如果需要获取多个组件,需要多次调用该方法,较为繁琐。 2.GetComponentInChildren(): 在物体及其子物体中查找指定组件

    2024年02月13日
    浏览(44)
  • 常用Python自动化测试框架有哪些?优缺点对比

    随着技术的进步和自动化技术的出现,市面上出现了一些自动化测试框架。只需要进行一些适用性和效率参数的调整,这些自动化测试框架就能够开箱即用,大大节省了测试时间。而且由于这些框架被广泛使用,他们具有很好的健壮性,并且具有广泛多样的用例集和技术来轻

    2024年02月03日
    浏览(50)
  • flink常用的几种调优手段的优缺点

    不管是基于减少反压还是基于减少端到端的延迟的目的,我们有时候都需要对flink进行调优,本文就整理下几种常见的调优手段以及他们的优缺点 1.使用事件时间EventTime模式时,可以设置水位线发送的时间间隔,比如从200毫秒缩小到100毫秒,缩短两倍 正作用:减少事件端到端处

    2024年02月06日
    浏览(40)
  • 常用的倾斜摄影三维模型3DTILES格式优缺点分析

     三维模型3DTILES格式是一种用于描述三维模型和场景数据的标准格式,具有以下优点和缺点: 优点: 1、多平台支持:3DTILES格式基于WebGL和JavaScript技术,可以在多个平台上运行,包括PC、移动设备、云服务器等。这为三维数据可视化和呈现提供了更广泛的应用空间。 2、数据

    2024年02月06日
    浏览(47)
  • 【云原生】软件架构的演进以及各个架构的优缺点

    软件架构是指在设计和构建软件系统时,对系统的组织结构、组件、模块、接口以及它们之间的关系和行为进行规划和定义的过程。它描述了软件系统的整体结构和组成部分之间的关系,以及系统的行为和功能。 软件架构的演进大致可以分为: 单机架构 应用数据分离架构 应

    2024年02月11日
    浏览(46)
  • 详解23种设计模式优缺点以及解决方案

    优点:确保一个类只有一个实例,提供全局访问点,节省资源。 缺点:可能引入全局状态,难以扩展和测试。 解决方法:使用依赖注入来替代直接访问单例对象,以便更好地控制依赖关系和测试。 优点:封装对象的创建,客户端代码与具体类解耦。 缺点:增加了代码复杂性

    2024年02月12日
    浏览(46)
  • 面试题:Spring 与 Springboot 的区别以及优缺点

    Spring是一个开源的Java开发框架,旨在简化企业级Java应用程序的开发。它提供了一套完整的基础设施,包括依赖注入、面向切面编程、声明式事务管理等。 Spring Boot是一个用于创建独立的、生产级别的基于Spring的应用程序的框架。它将各种Spring组件和第三方库整合到一个能够

    2024年02月13日
    浏览(46)
  • ERC 20 优缺点,以及 eth 3 种转账方式

    定义统一的函数名:名称、发行量、转账函数、转账事件等 以便交易所、钱包进行集成 所有实现了这些函数的合约都是 ERC20Token ERC20 可以表示任何同质的可以交易的内容: 货币、股票、积分、债券、利息... 可以用数量来表示的内容 基本上可以ERC20 表示 以下是一个遇到很多次

    2024年01月19日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包