到现在经过了两段实习,也因为喜欢网上冲浪,认识了不少大厂的朋友。反正大家的一致意见都是Restful利大于弊。我查了几天资料,稍微总结一下
为什么不用Restful
1.浏览器方面
- 浏览器普遍对GET和POST的支持最好
- 浏览器表单form提交只支持GET和POST
2.SpringMVC方面
- SpringMVC解析POST请求可以自动解析param和body,不需要加注解,而PUT DELETE请求必须加@RequestParam、@PathVariable、@RequestBody注解,虽然Spring3支持对PUT请求体的映射,但是需要在web.xml或者WebMvcConfigurerAdapter中进行配置————————这一点确实很好用,我现在维护的这个项目时间长了觉得真的很方便,很多没必要去字段匹配的直接写就好了
3.业务方面
- 一个“删”“改”操作不一定会那么干净,里面可能会夹杂很多的“查”“增”操作,但用一个PUT连基本RESTful的优势都成了劣势
- 增删改查的不同操作可以通过url的最后一项来区分:例如 */deleteXxxx或editXxxx
4.Http协议方面
- 同时,POST请求在大多数浏览器中默认提交两次tcp包,在网络环境差的情况下更保险
- PUT和DELETE在http协议中本质和POST一样,没有任何优势,反而在SpringMVC中容易出现一些问题
什么时候能用Restful
当且仅当
- 幂等修改删除可以用put,delete;不幂等用post
- 删除就是删除,修改就是修改,不会影响其他的业务数据
- 培训机构忽悠小白时
Get和Post的一些区别
- “是否提交大量数据”的功能可以直接由POST和GET来区分,GET不能放body参数,数据只能裸露放在url上,但浏览器url的长度大多限制为2kb,可以用POST来放body参数。
- GET请求的请求数据可能被浏览器缓存
- 如果非幂等请求用GET,结果如果被缓存就会出错,可以通过请求参数带时间戳等不重复无关参数来强制防止缓存
- 如果敏感信息用GET,那你的敏感信息就可能被完整的保存在了本地浏览器。当然,可以通过加密手段解决