RESTful是什么:URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作。
今天使用PostMan发报文去请求服务器,post和put放回正常结果,而发送get和delete则返回如下信息
"error": "Bad Request",
"exception": "org.springframework.web.bind.MissingServletRequestParameterException",
"message": "Required String parameter 'userName' is not present",
显示userName不存在,但是我明明有配置啊,后来我发现原来我post和put用的是@RequestBody来接收参数,而delete和get使用@RequestParam,那么我使用postman发送json格式报文给get和delete报错就解释得通了,也就引出了今天的话题,这两者的区别
- 区别
- 一般get我们用@RequestParam接收参数
@RequestParam在后台可以写多个参数接收,并检查是否必传 - @RequestBody用来接收json格式数据
@RequestBody在后台只能写一个参数,所以一般都是个集合或者类
- 一般get我们用@RequestParam接收参数
一般来说对于spring开发过程中,我的后台接收参数会这样设计:
- 对于post和put请求,我会使用@RequestBody
- 对于get和delete请求,我会使用@RequestParam
RESTful风格的请求连接,简洁安全,具体特点可以看阮一峰理解RESTful架构
我们开发中如果完全遵循RESTful进行设计,请求URL就不能出现动词,只能是名词,代表请求的资源,至于对资源的操作CRUD,就通过请求的方式:
- get 获取
- post 添加
- delete 删除
- put 修改
但由此会带来一些不方便,对于前端的要求也会有所提升,至少你的会发送delete和put请求。
当然对于RESTful的好处来说,这点处理可能算不上什么。