BlessingCR’s Blog
BlessingCR’s Blog

关于RESTful 规范

RESTful 规范

为什么遵循RESTful 规范

当多人负责一个模块时候
需求:
现在要修改文件的基本信息(全部修改),修改文件的基本信息(只修改提交的属性),修改文件的元信息(全部修改),修改文件的元信息(只修改提交的属性)
不遵循RESTful规范写法:
方法A
post /bi-file/baseFile/updateAll {....}
post /bi-file/baseFile/updateSome {....}
post /bi-file/mataFile/updateAll {....}
post /bi-file/mataFile/updateSome {....}
方法B
post /bi-file/baseFile/updateAll {....}
post /bi-file/baseFile/updateAny {....}
post /bi-file/mataFile/updateAll {....}
post /bi-file/mataFile/updateAny {....}
方法C
post /bi-file/baseFile/update {....}
post /bi-file/baseFile/updateAny {....}
post /bi-file/mataFile/update {....}
post /bi-file/mataFile/updateAny {....}
方法D
post /bi-file/baseFile/updateAll {....}
post /bi-file/baseFile/update {....}
post /bi-file/mataFile/updateAll {....}
post /bi-file/mataFile/update {....}
不遵循规范的话上面这样写都是可以的, N个人负责这个模块就有N种写法

RESTful的话,就下面一种
put /bi-file/baseFile {....}
patch /bi-file/baseFile {....}
put /bi-file/mataFile {....}
patch /bi-file/mataFilee {....}

为什么不严格遵循RESTful规范

1. 主要还是因为很多时候很多动词难以表达,比如login,很难映射成某种资源,不要为了RESTful而RESTful
2. 按照RESTful规范,不建议DELETE 带body,有时一些系统和组件也不支持Patch,比如AWS Linux,所以有时因为各种环境原因是不严格遵循的,比如现在Delete就带了body
3. 在一些复杂查询的时候,比如查询多个id,或者年龄大于5,这时候按照规范,需要先 post /xx/queries {条件1,条件2,条件3} 创造一个查询,然后用 get /xxx/i=id 用刚才返回的查询id查询,但是实际过程中可能期望直接返回,所以这也不遵循规范(使用post查询,不要用get id=1,2,3,4&age='5'&type=.. 这种方式, 这种纯粹为了RESTful而RESTful)

发表回复

textsms
account_circle
email

BlessingCR’s Blog

关于RESTful 规范
RESTful 规范 为什么遵循RESTful 规范 当多人负责一个模块时候 需求: 现在要修改文件的基本信息(全部修改),修改文件的基本信息(只修改提交的属性),修改文件的元信息(全部修改),…
扫描二维码继续阅读
2023-06-21