一.REST风格的简单介绍
REST的含义:representational state transfer(表象性状态转变),表述性状态转移是一组架构约束条件和原则。
REST风格是一种把所有事物都定义为资源的思想,是一种特殊的web服务的架构风格。
资源标识符就是URI(Uniform Resource Identifier),REST通过定义不同的URL对所有的资源进行唯一标识。
REST架构的基本原则
网络上的所有事物都被抽象为资源
每个资源都有一个唯一的资源标识符
同一个资源具有多种表现形式(xml,json等)
对资源的各种操作不会改变资源标识符
所有的操作都是无状态的
符合REST原则的架构方式即可称为RESTful
REST延伸出来RESTful,RESTful含义为REST式的,指的是严格遵守REST风格的东西,例如Restful web service。
URL的RESTful以后的变化(CRUD增删改查)
RESTful前的URL
GET请求:http://locahost:8080/user/query/id 根据id查询值
POST请求:http://locahost:8080/user/save 新增
POST请求:http://locahost:8080/user/update 修改
GET/POST请求: http://locahost:8080/user/delete 删除
RESTful后的URL
GET请求:http://locahost:8080/user/id 根据id查询值
POST请求:http://locahost:8080/user 新增
PUT请求:http://locahost:8080/user 修改
DELETE请求: http://locahost:8080/user 删除
借鉴于:【Restful】三分钟彻底了解Restful最佳实践
二.SpringMVC的参数传递
注解方式:@requestMapping,有value属性(一个参数时默认)指定url路径解析。
@Controller
@RequestMapping("/xxx")
public class xxxController {}
spingmvc用注解@Controller的方式声明控制器,用@RequestMapping(“/xxx”)注解声明改控制器拦截的url类型。
不同的请求会有不同的作用,不同的请求需要传递不同的参数,SpringMVC提供了4种获取参数的方式。
1、@RequestParam
用@RequestParam(“partyId”)的方式绑定参数值。
@RequestMapping(method = RequestMethod.GET)
public String setupForm(@RequestParam("partyId") int partyId, Model model) {
2、@PathVariable
当使用@RequestMapping URI template 样式映射时, 即 Url/{partyId}, 这时的paramId可通过 @Pathvariable注解绑定它传过来的值到方法的参数上。
@RequestMapping(method = RequestMethod.GET)
public String setupForm(@PathVariable(value = "partyId") int partyId, Model model) {
3、 @RequestHeader
通过@RequestHeader注解把xxxId绑定到partyId上。
@RequestMapping(method = RequestMethod.GET)
public String setupForm(@RequestHeader("xxxId") int partyId, Model model) {
4、@ModelAttribute
该注解有两个用法,一个是用于方法上,一个是用于参数上;
用于方法上时: 通常用来在处理@RequestMapping之前,为请求绑定需要从后台查询的model;
@ModelAttribute
public Account create(@RequestParam String number) {
用于参数上时: 用来通过名称对应,把相应名称的值绑定到注解的参数bean上;要绑定的值来源于:
1) @SessionAttributes 启用的attribute 对象上;
2) @ModelAttribute 用于方法上时指定的model对象;
3) 上述两种情况都没有时,new一个需要绑定的bean对象,然后把request中按名称对应的方式把值绑定到bean中。
@RequestMapping(value = "/update", method = RequestMethod.POST)
public Map<String, Object> updateParty(@Valid @ModelAttribute("Meeting") Meeting meeting,
BindingResult result) {