为什么要用REST风格

1.背景介绍

官方介绍:REST(Representational State Transfer)指的是一种架构设计风格,而满足这种设计风格的应用程序或设计就被认为是RESTful架构风格。这也是目前互联网中最流行的一种软件架构风格,它结构清晰、符合标准、易于理解,越来越多的应用服务开始使用RESTful这种架构风格,尤其是那些基于HTTP协议的网络服务。

2.知识剖析

REST — REpresentational State Transfer 中文翻译过来是:表现层状态转移。这个中文直译经常出现在很多博客中。尼玛谁听得懂“表现层状态转移”?这是人话吗?

之所以晦涩是因为前面主语被去掉了,全称是 Resource Representational State Transfer:通俗来讲就是:资源在网络中以某种表现形式进行状态转移。分解开来:

Resource:资源,即数据它可以是一段文本、一张图片、一首歌曲等;

Representational:某种表现形式,比如用JSON,XML,JPEG等;

State Transfer:状态变化。通过HTTP动词实现。

Rest风格总结后就是:

URL定位资源,用HTTP动词(GET,POST,DELETE,PUT)描述操作。

1. REST描述的是在网络中client和server的一种交互形式;REST本身不实用,实用的是如何设计 RESTful API(REST风格的网络接口);

2. Server提供的RESTful API中,URL中只使用名词来指定资源,原则上不使用动词。“资源”是REST架构或者说整个网络处理的核心。

3. 用HTTP协议里的动词来实现资源的添加,修改,删除等操作。

4. Server和Client之间传递某资源的一个表现形式,比如用JSON,XML传输文本,或者用JPG,WebP传输图片等。当然还可以压缩HTTP传输时的数据(on-wire data compression)。

5. 用 HTTP Status Code传递Server的状态信息。比如最常用的 200 表示成功,500 表示Server内部错误等。

3.常见问题

举例说明:

我想定义接口,一个是获取信息,一个是删除信息,一个修改信息,一个新增信息以下接口看起来是没有问题的,而且大家一般也是这么做的

/user/getinfo

/user/putinfo?id=

/user/delinfo?id=

/user/add

但是,这不是RESTful的,因为你定义了一个行为,将行为细节都交给接口实现的,每一个行为独占一个接口,如果业务有变更,你可能还要改,比如要求只能删除7天之前的。以下接口则是RESTfull的,接口仅描述了资源,具体操作由指定的动作来完成。

4.解决方案

使用HTTP协议动词来做增删改查操作

GET /user/info

DEL /user/info?id=

PUT /user/info?id=

POST /user/info

这样,服务端仅需要简单的维护资源,做状态切换却可。对于只能删除7天之前的这种事,则由上层逻辑去控制,底层安稳的一直存在下去,除非某一天,确实不用这个资源了。

5.扩展思考

为什么要用RESTful结构呢?

近年来移动互联网的发展,各种类型的Client层出不穷,RESTful可以通过一套统一的接口为 Web,iOS和Android提供服务。,有了RESTful结构,不管是电脑端还是手机端,或者是APP,按照REST的接口来进行数据交互,完全不用关心后端实现,也就是说,前端和后端真正的实现了完全的分离设计

为什么要用REST风格_第1张图片

Categories: MicroServices REST

发表评论 取消回复

为什么要用REST风格_第2张图片

电子邮件地址不会被公开。

Name
Email
Website
What's on your mind?

近期文章
  • Maven deploy部署jar到远程私服仓库
  • java动态代理实现与原理
  • git 常用命令
  • java中观察者模式Observable和Observer
  • Netty解决TCP粘包和拆包问题的四种方案
近期评论
  • 马化腾发表在《Nginx的一些基本功能》
  • geyang发表在《世界,您好!》
  • 一位WordPress评论者发表在《世界,您好!》
分类目录
  • Big Data (5)
  • Java (27)
  • MicroServices (13)
    • GateWay (2)
    • REST (2)
  • Plus (38)
  • Spring (9)
    • Spring Boot (5)
    • Spring Data (4)
  • 中间件/框架 (5)
    • Kafka (3)
  • 数据库 (11)
    • Hbase (5)
    • MongoDb (2)
    • Mysql (3)
标签
apiDoc Drools dubbo fiddler Grafana hbase Hystrix IDEA java JDK jpa jvisualvm jvm kafka linux MongoDB MQTT Mysql Netty nginx OpenJDK Prometheus REST RocketMQ RPC Servlet Sleuth SOA spring boot spring data zookeeper Zuul 域名 微服务 数据结构 日志 爬虫 缓存 股票 设计模式 读书 运维 队列 集合 音乐
联系我

你可能感兴趣的:(为什么要用REST风格)