现如今微服务如日中天,那么大家有没有想过各个微服务之间是怎么调用数据亦或是怎么交互的呢?当然方式有很多,但今天所说的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
代码语言:javascript复制# 以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风格端点
代码语言:javascript复制# 创建一个商品实体类
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;
}
}
代码语言:javascript复制# 控制器
@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 星期三