浅谈REST架构风格

现如今微服务如日中天,那么大家有没有想过各个微服务之间是怎么调用数据亦或是怎么交互的呢?当然方式有很多,但今天所说的REST风格被业界推荐为微服务之间交互的首选方式(小编还是非常喜欢这种方式的)。废话不多讲,下面就说说REST风格到底是个神马东东。–读《深入浅出 Sping Boot》有感


REST简介

REST(Representational State Transfer)又被唤作表现层状态转换。它涉及到三个重要名词:

  • 资源
    所谓资源简单讲就是服务所能提供的数据,可以是实体数据也可是媒体类型,图片、PDF、文本等

  • 表现层
    何为变现层?简单说就是将数据以某种方式展现给用户,或者给客户返回一张图片等等动作称之为表现,通常是已JSON或XML形式展现数据

  • 状态转换
    状态转换就是对数据进行一系列的操作,因为资源本身并非一尘不变,随着需求的变化而变化。一个资源可能会随着需求的变化而经历一个资源创建、修改、查询、删除等过程,REST风格正是基于HTTP协议运行的,HTTP协议又被称为无状态协议,所以资源的变化需要在服务端完成。


REST风格之RUI设计

在做这个之前有必要清楚Http协议的7种常用动作:GET、POST、PUT、PATCH、DELETE、HEAD、OPTIONS

# 以id为编码 获取商品信息
GET  /goods/1
# 获取多个商品信息
GET  /goods/{goodName}/{note}
# 创建商品信息
POST  /goods/{goodName}/{price}/{note}
# 修改商品信息
PUT  /goods/{goodName}/{price}/{note}
# 修改商品部分
PATCH  /goods/{goodName}/{note}
# 删除某个商品信息
DELETE  /goods/2

REST风格端点

# 创建一个商品实体类
 public class goods{
    private Long id;
    private String goodsName;
    private Double price;
    private String note;
    
    public Long getId(){
        return id;
    }
    public void setId(Long id){
        this.id = id;
    }
    public String getGoodsName(){
        return goodsName;
    }
    public void setGoodsName(String goodsName){
        this.goodsName = goodsName;
    }
    public Double getPrice(){
        return price;
    }
    public void setPrice(Double price){
        this.price = price;
    }
    public String getNote(){
        return note;
    }
    public void setNote(String note){
       this.note = note;
    }
}
# 控制器
@Controller
public class GoodsController{
    /**
     *REST风格 获取商品的GET请求方式
     **/
     @GetMapping(value="/goods/{id}")
     @ResponseBody
    public Goods getGoods(@Pathvariable("id") Long id){
        Goods goods = goodsService.getGoods(id);
        return goods;
    } 
    /**
     *REST风格 PUT请求修改商品信息
     **/
     @GetMapping(value="/goods/{id}")
     @ResponseBody
    public Goods getGoods(@Pathvariable("id") Long id,@RequestBody Goods goods){
        Goods goods = goodsService.getGoods(id);
        goods.setId(id);
        goodsService.update(goods);
        return goods;
    } 
    /**
     *REST风格 使用HTTP的DELETE请求删除商品信息
     **/
     @GetMapping(value="/goods/{id}")
     @ResponseBody
    public String getGoods(@Pathvariable("id") Long id){
        int status = goodsService.deleteGoods(id);
        String result = "";
        if(status=0){
            result = "操作成功";
        }else{
            result = "操作失败";
        }
        return result;
    } 
}

以上是我对REST风格的简单认识,希望能给您提供些许帮助!谢谢支持!!
2019-03-27 23:30:34 星期三

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟小码

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值