RESTful风格api

restful 是一种架构风格、设计风格。而并非标准。

RESTful原本名称叫做 representational state transfer (代表性 声明 传递协议) 我理解为:具有代表性的传输协议

在其他领域还有一个词 叫做 representational difference analysis (代表性差异分析法)


什么是restful?

restful是一种设计风格,就好像你用tab别人用四个空格一样,你喜欢就是你自己的风格。

    var s = 'tab'
    var space = '四个空格' //用你喜欢的风格就好

但是,restful之所以能够流行起来一定是有一定的优点或者说被大家所认同的地方。

restful的优点

todo 待补充

什么是幂等?

幂等最早出自于数学:

其中的就是指 乘方运算的结果,例如 a^n a的n次方,a为幂的底数,n为幂的指数。

幂等元素就是自己被重复运算,结果等于他自己的元素。乘法中唯二幂等的实数为 0和1。 幂等函数可以在相同的参数下重复执行,并且获取到相同结果的函数。

说完数学,幂等这个概念在计算机里面也有大量用到:

一个幂等操作就是 一次或者多次执行 影响均相同,举个栗子:

    function f(param) {
      console.log('hello ' + param)
    }
    f('world')
    f('world')
    f('world')
    // ………… 无论执行多少次,出现的结果都是 hello world

这就是幂等性,幂等性为何如此重要,因为我们在编程中大量的有利用到这个特性:

最常见的一个例子

你可能会遇到这种问题,你写了一个方法,传递了一个参数做测试,然后偶然情况下会出现错误,但是大部分情况下不会出现。你不得不为了和这个幽灵一样的存在而找bug到头大。
此时你最希望的结果就是 这个方法每次都会正确,和你测试的时候一样(这就是幂等性)。

接口也一样

我们在前后端对接的时候,最头大的无非就是接口报错,有时候正确有时候不正确,是不是像极了上面所说的情况?但是对于灵活的业务逻辑,有的时候不得已而为之,
必须报错。所以我们在rest风格里面严格规定了符合幂等性和不符合幂等性的不同方法。

restful 的示例

下面列出了GET,DELETE,PUT和POST的典型用法:

请求方式 是否幂等 是否安全 作用 示例
GET 幂等 安全 获取表示 获取一个人的手机号码
POST 不幂等 不安全 使用服务端的实例创建资源 添加一个人的手机号码
PUT 幂等 不安全 通过替换的方式来更新资源 修改一个人的手机号码
DELETE 幂等 不安全 使用服务端的实例创建资源 删除一个人的手机号码

参数如何传递?

以前我们只用过GET和POST请求 参数无非就是GET请求地址后面添加?然后紧跟参数。如下:

https://www.baidu.com/s?wd=java&rsv_spt=1&rsv_iqid=0xa9828fb600006fec&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_sug3=4&rsv_sug1=3&rsv_sug7=100&rsv_sug2=0&inputT=531&rsv_sug4=531
https://www.baidu.com/s?wd=java

百度搜索java用的也是get请求(安全且幂等)
下面的是post请求,它不仅仅跟了参数,而且还添加了form表单数据一并提交。


登录请求参数.png

查看具体的请求参数](./HTTP请求.md)

你可能感兴趣的:(RESTful风格api)