对restful的理解

吃可爱长大的小学妹 提交于 2020-01-13 05:08:43

理解restful之前先来了解一下rest.
REST(英文:Representational State Transfer,简称 REST,意思是:(资源)表述性状态转化)描述了一个架构样式的网络系统, 比如 web 应用程序。

它是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

它本身并没有什么实用性,其核心价值在于如何设计出符合 REST 风格的网络接口。

restful就是rest的一种实现:
主要特征有以下三个:

  • 资源(Resources):
    网络上的一个实体,或者说是网络上的一个具体信息。(简单来说,就是肯定是名词)

  • 表现层(Representation):
    把资源具体呈现出来的形式,叫做它的表现层 (Representation)。比如,文本可以用 txt 格式表现,也可以用 HTML 格式、XML 格式、JSON 格式表现,甚至可以采用二进制格式。(对应http请求头:Acceppt,Content-Type)

  • 状态转化(State Transfer):
    以不同的http method来标示你要进行什么类型的操作(get-查询,post-新增, put-更新,delete-删除)

我觉得post和put的最大区别是:如果你的接口接受put请求,那么就表示你的接口是幂等的,也就是同一个url重复访问,结果都一样,就算你是更新操作,如果你是这么写sql的num = num+5,而不是num=10,那么你的接口也不是冥等的,也应该是post,而不是put.

一个简单的例子:
不符合restful:/user/getUserById?id=1
符合:/user/1 查询 http请求方法为get
/user/1 删除 http请求方法为delete

总结就是:
1.你提供的地址是个url(统一资源定位符),只是能定位一个资源,而不是从url中体现要进行什么操作。
2.通过请求方法体现你对资源做什么操作
3.服务器端能根据客户端的Accept请求头,返回对应格式的类型,以content-type来告知客户端返回什么格式的内容。

不知道有没有公司是严格验证这个规范来的,我觉得要是接口太多,业务太复杂,这个根本没法满足呀

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!