【Java】一分钟理解什么是REST和RESTful

从事web开发工作有一小段时间,REST风格的接口,这样的词汇总是出现在耳边,然后又没有完全的理解,您是不是有和我相同的疑问呢?那我们一起来一探究竟吧!

知乎大神Ivony有句话说的好:

就是用URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作

咱们不解释REST是哪几个单词的首字母,说了也不知道,翻译成中文就是表现层状态转移,我是弄不懂。

在设计web接口的时候,REST主要是用于定义接口名,接口名一般是用名次写,不用动词,那怎么表达“获取”或者“删除”或者“更新”这样的操作呢——用请求类型来区分。

比如,我们有一个friends接口,对于“朋友”我们有增删改查四种操作,怎么定义REST接口?

增加一个朋友,uri: generalcode.cn/v1/friends 接口类型:POST

删除一个朋友,uri: generalcode.cn/va/friends 接口类型:DELETE

修改一个朋友,uri: generalcode.cn/va/friends 接口类型:PUT

查找朋友,uri: generalcode.cn/va/friends 接口类型:GET

上面我们定义的四个接口就是符合REST协议的,请注意,这几个接口都没有动词,只有名词friends,都是通过Http请求的接口类型来判断是什么业务操作。

举个反例:generalcode.cn/va/deleteFriends 该接口用来表示删除朋友,这就是不符合REST协议的接口。

一般接口的返回值是JSON或者XML类型的,笔者在互联网的工作经验一般都是JSON类型的。

用HTTP Status Code传递Server的状态信息。比如最常用的 200 表示成功,500 表示Server内部错误,403表示Bad Request等。(反例:传统web开发返回的状态码一律都是200,其实不可取。)

那这种风格的接口有什么好处呢?前后端分离。前端拿到数据只负责展示和渲染,不对数据做任何处理。后端处理数据并以JSON格式传输出去,定义这样一套统一的接口,在web,ios,android三端都可以用相同的接口,是不是很爽?!

本文转载自:https://blog.csdn.net/intelrain/article/details/80449371

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
REST(Representational State Transfer)是一种软件架构风格,用于构建分布式系统。它是一种基于网络的设计原则,强调在系统中以资源为中心进行通信和交互。RESTful是符合REST原则的应用程序设计风格。 RESTful的主要原则包括: 1. 资源:在RESTful架构中,所有的数据和功能都被视为资源。每个资源都有一个唯一的标识符(URI)来访问和操作。 2. 统一接口RESTful架构使用统一的接口风格,包括使用HTTP方法(GET、POST、PUT、DELETE等)对资源进行操作,以及使用HTTP状态码来表示请求的结果。 3. 无状态:RESTful架构是无状态的,即服务器不会存储客户端的状态信息。每个请求都应该包含足够的信息来处理请求,服务器不需要维护会话状态。 4. 可缓存:RESTful架构支持对响应进行缓存,以提高性能和减少网络流量。 REST/RESTful的用途包括: 1. Web服务:RESTful架构被广泛用于构建Web服务,通过HTTP协议进行通信,并使用JSON、XML等格式来表示数据。 2. API设计:将应用程序功能以RESTful的方式暴露为API接口,使得其他应用程序可以通过HTTP请求进行访问和集成。 3. 分布式系统:RESTful架构适用于构建分布式系统,通过资源的唯一标识符和HTTP方法进行通信和交互。 4. 轻量级通信:由于RESTful使用HTTP协议作为通信协议,它具有轻量级、简单和易于实现的特点,适用于各种场景的通信需求。 总而言之,REST/RESTful是一种基于网络的软件架构风格,强调以资源为中心进行通信和交互。它具有简单、可扩展和可维护的特点,适用于构建Web服务、API设计以及分布式系统等场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值