Spring MVC与RESTful

1.在Spring MVC框架中,接收请求参数的做法有:

- 将各请求参数声明为处理请求的方法的参数
- 将各请求参数封装到自定义的POJO类型中,并使用POJO类型作为处理请求的方法的参数
- 【见下文】在配置请求路径时使用占位符,并通过`@PathVariable`注解来接收请求参数的值

RESTful是一种设计软件的风格,其典型特征包括:将具有“唯一性”的请求参数值作为URL的一部分,例如:
https://blog.csdn.net/a6244353135_/article/details/1242675432835
2.Spring MVC框架很好的支持了RESTful,在使用`@RequestMapping`系列注解配置请求路径时,可以使用`{名称}`作为占位符来接收请求,例如配置为:

@PostMapping("/{id}/delete")在处理请求的方法上,仍使用`Long id`来接收URL中的占位符对应的值,并且,此参数需要添加`@PathVariable`注解,例如:
@PostMapping("/{id}/delete")
public String delete(@PathVariable Long id) {
}
在使用`@PathVariable`注解时,如果请求参数的名称与占位符不一致时,可以通过注解参数进行配置,例如:
@PostMapping("/{id}/delete")
public String delete(@PathVariable("id") Long brandId) {
}
另外,在`{}`占位符中,可以在自定义名称的右侧添加冒号(`:`),并在冒号的右侧添加正则表达式,以实现按需匹配,例如:
@PostMapping("/{id:[0-9]+}/delete")
public String delete(@PathVariable Long id) {
}
在同一个项目中,多个使用了占位符、且正则表达式不冲突的URL,是允许共存的!
另外,使用了占位符的URL,与不使用占位符的URL,也是允许共存的
在RESTful的设计风格中,如果没有更好的选择,在设计URL时,可以:

- `/数据类型的复数`:表示获取某类型的数据的列表
  - 例如:`/brands`表示获取品牌列表
- `/数据类型的复数/{id}`:表示获取某类型的id=?的数据
  - 例如:`/brands/{id}`,实际请求路径可能是`/brands/1`,则表示获取id=1的品牌数据
- `/数据类型的复数/{id}/命令`:表示针对某类型的id=?的数据进行某操作
  - 例如:`/brands/{id}/delete`,实际请求路径可能是`/brands/1/delete`,则表示删除id=1的品牌数据
- `/数据类型的复数/{id}/属性/命令`:表示针对某类型的id=?的数据的某属性进行某操作
- 其它

另外,RESTful思想**建议**针对不同的需求,使用不同的请求方式,如下:

- `GET`:获取数据
- `POST`:增加数据
- `PUT`:修改数据
- `DELETE`:删除数据

3. 关于响应结果

控制器处理完请求后,向客户端进行响应时,推荐使用JSON格式的响应数据,并且,此JSON格式的数据中至少应该包括:

- 业务状态码
- 提示信息

在Spring MVC框架中,当需要向客户端响应JSON格式的结果时,需要:

- 当前处理请求的方法必须是“响应正文”的
  - 在处理请求的方法或控制器类上使用`@ResponseBody`,或控制器类上使用了`@RestController`,就是“响应正文”的
- 在项目中添加`jackson-databind`的依赖
  - 包含在`spring-boot-starter-web`依赖项中
- 开启注解驱动
  - 使用注解模式的Spring MVC项目(包括Spring Boot)均默认开启
- 使用自定义的类型作为处理请求的方法的返回值类型,并且,此类中应该包含响应的JSON中的各属性

猜你喜欢

转载自blog.csdn.net/weixin_71583566/article/details/126634949