SpringBoot对Restful风格API有天然的支持,不需要再像SpringMVC一样给Restful风格API增加额外的配置。但是SpringBoot对API的支持相对于SpringMVC也发生了变化,变化如下:
在SpringMvc中,一般为了简化路径,一系列类似的路径,都会将头放在类的注解中,比如@RestController("/girls")
,后面的路径就自动带上了“/girls”,比如下方的删除的路径就是/girls/{id}
:
@RestController("/girls")
public class GirlController {
private GirlService girlService;
/**
* 构造函数式注入
*/
@Autowired
public GirlController(GirlService girlService) {
this.girlService = girlService;
}
/**
* 删
*/
@DeleteMapping("/{id}")
public void removeGirl(@PathVariable("id") Integer id){
girlService.removeGirl(id);
}
}
但是在Springboot中,不再支持这种简化方式,必须老老实实把所有的路径写全,上面的代码就必须改成这样:
@RestController
public class GirlController {
private GirlService girlService;
/**
* 构造函数式注入
*/
@Autowired
public GirlController(GirlService girlService) {
this.girlService = girlService;
}
/**
* 删
*/
@DeleteMapping("/girls/{id}")
public void removeGirl(@PathVariable("id") Integer id){
girlService.removeGirl(id);
}
/**
* 改
*/
@PutMapping("/girls/{id}")
public Girl modifyGirl(@PathVariable("id") Integer id,
@RequestParam("age") Integer age,
@RequestParam("cupSize") String cupSize){
return girlService.modifyGirl(id,age, cupSize);
}
。。。。。。。。
}
若不改成上述形式,则会报错:
2018-06-27 09:55:22.896 WARN 8516 --- [nio-8080-exec-1] o.s.web.servlet.PageNotFound : Request method 'DELETE' not supported