千峰商城-springboot项目搭建-09-RESTfulURL设计规范

 RESTful:

前后端分离开发的项目中,前后端之间是接口进行请求和响应,后端向前端提供请求时就要对外暴露一个URL;URL的设计不能是随意的,需要遵从一定的设计规范——RESTful。

RESTful是一种web api的标准,也就是一种url设计风格/规范。

 

1.每个URL请求路径代表服务器上的唯一资源。

//传统的URL设计:
http://localhost:8080/goods/delete?goodsId=1      //商品1
http://localhost:8080/goods/delete?goodsId=2      //商品2

//RESTful设计:
http://localhost:8080/goods/delete/1       //商品1
http://localhost:8080/goods/delete/2       //商品2

 

 

修改GoodsController.java:

@Controller
@RequestMapping("/goods")
@Api(value = "提供商品添加,修改,删除及查询的相关接口",tags = "商品管理")
public class GoodsController {

    @RequestMapping(value = "/add",method = RequestMethod.POST)
    public ResultVO addGoods(){
        return null;
    }

   // @ApiIgnore
    @RequestMapping(value = "/delete/{gid}")
    public ResultVO deleteGoods(@PathVariable("gid") int goodsId){
        System.out.println("---------------" + goodsId);
        return new ResultVO(10000,"delete success",null);
    }

    @RequestMapping(value = "/update",method = RequestMethod.PUT)
    public ResultVO updateGoods(){
        return null;
    }


    @RequestMapping(value = "/list",method = RequestMethod.GET)
    public ResultVO listGoods(){
        return null;
    }
}

 

查看swagger文档:

 

 进行删除测试:

http://localhost:8080/goods/delete/1

http://localhost:8080/goods/delete/2

 

控制台:

 

 删除成功!

 
 
 
2.使用不同的请求方式表示不同的操作
springmvc对RESTful风格提供了很好的支持。在我们定义一个接口的URL时,可以通过两种方式:“RequestMapping(value="/{id}",method=RequestMethod.GET)”方式指定请求方式;也可以使用特定请求方式的注解设定URL:“@PostMapping("/add")”,“@DeleteMapping("/{id}")”,“@PutMapping("/{id}")”,“@GetMapping("/{id}")”
 
post 添加
get   查询
put   修改
delete  删除
option  (预检)
 
 
根据ID删除一个商品:【delete】
  @RequestMapping(value = "/{id}",method = RequestMethod.DELETE)
    public ResultVO deleteGoods(@PathVariable("id") int goodsId){
        System.out.println("---------------" + goodsId);
        return new ResultVO(10000,"delete success",null);
    }

 根据ID查询一个商品:【get】

    @RequestMapping(value = "/{id}",method = RequestMethod.GET)
    public ResultVO getGoods(@PathVariable("id") int goosId){
        return null;
    }

 

 
 
 
3.接口响应的资源的表现形式采用JSON(或者XML)
在控制器类  或者  每个接口方法添加“@ResponseBody”注解,将返回的对象格式化为JSON。
或者直接在控制器类使用@RestController注解声明控制器。
 
GoodsController.java:
@RestController
//@Controller
//@ResponseBody
@RequestMapping("/goods")
@Api(value = "提供商品添加,修改,删除及查询的相关接口",tags = "商品管理")
public class GoodsController {

    @PostMapping("/add")
    public ResultVO addGoods(){
        return null;
    }

   // @ApiIgnore
    @DeleteMapping("/{id}")
    //@ResponseBody
    public ResultVO deleteGoods(@PathVariable("id") int goodsId){
        System.out.println("---------------" + goodsId);
        return new ResultVO(10000,"delete success",null);
    }

    @PutMapping("/{id}")
    //@ResponseBody
    public ResultVO updateGoods(){
        return null;
    }

    @GetMapping(value = "/list")
    //@ResponseBody
    public ResultVO listGoods(){
        return null;
    }

    @RequestMapping(value = "/{id}",method = RequestMethod.GET)
    //@ResponseBody
    public ResultVO getGoods(@PathVariable("id") int goosId){
        return null;
    }
}

 

 
 
4.前端(Android、ios、pc)通过无状态的HTTP协议与后端接口进行交互。
 

 

 

 
 
 
posted @ 2022-05-03 23:36  临易  阅读(84)  评论(0编辑  收藏  举报