到底什么是REST?怎么用通俗的语言解释REST以及RESTful?

最近在学习Retrofit的时候,看到Square官方对Retrofit的描述:

“A type-safe REST client for Android and Java“

即:Retrofit是为Android和Java平台的应用提供的一个类型安全的REST客户端。

那么什么是REST呢?

REST – Representational State Transfer 直接翻译:表现层状态转移。

这个中文直译经常出现在很多博客中。尼玛谁听得懂“表现层状态转移”?这是人话吗?

后来终于在知乎上找到了靠谱的解答:

所谓REST就是用URL定位资源,用HTTP描述操作。

追问:关键是 RESTful 之前也一直是 url 来定位资源的啊?!

答:RPC的话很多不是资源,而是操作,例如/DeleteOrder /GetOrder?id=1

还有一个回答下面的评论很有启发性:

不知道网上那么多篇长文讨论这个玩意干什么,把doSth这种动宾短语格式的action请求用sth这种名词来代替,意思是我们是访问的是网络上的某处资源。。。然后用http的四种method来偷偷摸摸的表达增删改查

URI使用名词而不是动词,且推荐用复数。

BAD

● /getProducts
● /listOrders
● /retrieveClientByOrder?orderId=1

GOOD

● GET /products : will return the list of all products
● POST /products : will add a product to the collection
● GET /products/4 : will retrieve product #4
● PATCH/PUT /products/4 : will update profduct #4

好了,看到这里,总算对REST有了一个比较具体的认识,说白了就是资源的定位方式,从以前的动词指向到现在的名词指向:

例如以前的写法:/getOrder?id=1
REST的写法就是: /orders/1

这样有什么好处,可能搞web的会比较清楚。REST不是一种强制的协议,而是一种规范,而RESTful就是采用了这种规范的编程了。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值