资讯专栏INFORMATION COLUMN

浅谈REST风格

Darkgel / 3334人阅读

摘要:废话不多讲,下面就说说风格到底是个神马东东。一个资源可能会随着需求的变化而经历一个资源创建修改查询删除等过程,风格正是基于协议运行的,协议又被称为无状态协议,所以资源的变化需要在服务端完成。

现如今微服务如日中天,那么大家有没有想过各个微服务之间是怎么调用数据亦或是怎么交互的呢?当然方式有很多,但今天所说的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 星期三

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/73972.html

相关文章

  • 架构~微服务

    摘要:接下来继续介绍三种架构模式,分别是查询分离模式微服务模式多级缓存模式。分布式应用程序可以基于实现诸如数据发布订阅负载均衡命名服务分布式协调通知集群管理选举分布式锁和分布式队列等功能。 SpringCloud 分布式配置 SpringCloud 分布式配置 史上最简单的 SpringCloud 教程 | 第九篇: 服务链路追踪 (Spring Cloud Sleuth) 史上最简单的 S...

    xinhaip 评论0 收藏0
  • 架构~微服务 - 收藏集 - 掘金

    摘要:它就是史上最简单的教程第三篇服务消费者后端掘金上一篇文章,讲述了通过去消费服务,这篇文章主要讲述通过去消费服务。概览和架构设计掘金技术征文后端掘金是基于的一整套实现微服务的框架。 Spring Boot 配置文件 – 在坑中实践 - 后端 - 掘金作者:泥瓦匠链接:Spring Boot 配置文件 – 在坑中实践版权归作者所有,转载请注明出处本文提纲一、自动配置二、自定义属性三、ran...

    church 评论0 收藏0
  • 那些年,我们一起误解过的REST

    摘要:通过增删查改,引起资源状态的改变,称为状态转移。用于获取资源的元信息。方法与方法类似,都可以查询资源的元信息放在的,但不会返回资源的表述。表示请求有问题,如参数错误等。表示当前请求的某前置条件不符合。网关错误,从上游服务器收到无效响应。 欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由sammyshen 发表于云+社区专栏 最近几年REST API越来越流行,特别是...

    DesGemini 评论0 收藏0
  • 详解REST架构风格

    摘要:但是远远不仅是指的风格,它是一种网络应用的架构风格。参考用定位资源在架构风格中,用来指定一个资源。完整状态码列表如何设计在过去不使用架构风格的时候,如果我们要设计一个系统,会以操作为出发点,然后围绕它去建设其他需要的东西。 引言 作为Web开发者,你可能或多或少了解一些REST的知识,甚至已经非常习惯于它,以至于在正式地学习REST的时候,你可能心里会想:本来就是这样做的啊,不然还能怎...

    ChanceWong 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<