restful理解

正如java面向对象一样,restful面向资源,其实也可以面向对象的路径版本。是一种对路径的设计。

正因为面向资源的设计,所以是路径上只有名词,而请求方式代表动作

一.动作侧重点

  1. put 增加或者修改 偏重于修改
  2. post 增加 或者修改 偏重于新增
  3. delete 删
  4. get 获得

2021-08-12

 

二.put和post的区别

put和post对于更新资源,put更为强大,如果指定的资源不存在,可以创建资源.

而创建资源,put是幂等的,多次操作以最后一次操作为准,多次重复操作都只会有同一个影响,以数据库为例,put创建资源时需要指定id,即没有id时创建,有id时更新。

而post创建资源,不是幂等的。以数据库为例,创建资源不能指定id,多次操作都是创建.如果指定id时,就一定是已有资源的更新.

总结:post只能更新已有资源,put创建资源是幂等的。

2021-08-12

 

三,思考问题

如何来表示对象的多个动作?

比如用户的冻结和解冻如何表示.

很明显/user put方式无法解决这个问题.

但是/user/id/unfreeze 和/user/id/freeze put违反了restful的名词资源设计原则,又回到最初的设计了

既然是动作,那能不能加一个move的请求方式来用/user 这样多个动作会有很多请求方式,会导致不好扩展

 

目前我能找到暂时的解决的办法是动作(增删查改)如果固定,找解冻和冻住的是用户的那种资源.

用//user/id/status put请求,通过body参数的不同来解冻和冻结客户,即用户状态资源的修改。

 

四.参考资料

https://blog.csdn.net/longge9999/article/details/84745648

https://blog.csdn.net/mian_CSDN/article/details/84099349?utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control

 

https://www.baidu.com/s?ie=UTF-8&wd=%E5%B9%82%E7%AD%89

 

https://www.runoob.com/w3cnote/restful-architecture.html

 

https://www.iteye.com/problems/75742

 

https://zhuanlan.zhihu.com/p/68103094

https://www.ruanyifeng.com/blog/2014/05/restful_api.html

 

posted @ 2020-10-22 09:12  24601  阅读(158)  评论(0编辑  收藏  举报