REST面向资源架构 RESTful架构

  REST基础概念:

  • 在REST中的一切都被认为是一种资源。
  • 每个资源由URI标识。
  • 使用统一的接口。处理资源使用POST,GET,PUT,DELETE操作类似创建,读取,更新和删除(CRUD)操作。
  • 无状态。每个请求是一个独立的请求。从客户端到服务器的每个请求都必须包含所有必要的信息,以便于理解。
  • 通信都是通过展现。例如XML,JSON

  以状态为角度,提出将状态移植到客户端处理的新思路。 提出一个既适于客户端应用又适于服务端的应用的、统一的Web视图。适合B/S C/S S/S。 HTTP客户端与HTTP服务器之间的差别,对架构来说无所谓。一个软件应可以既充当Web客户端又充当Web服务器,而无须采用两套完全不同的APIs。

  提供资源操作方法的统一:POST, GET, PUT, DELETE ,以超文本或超媒体驱动(hypertext/Hypermedia)的状态转移是REST架构核心。 操作带来状态变化,状态转移遍历使用链接导航方式实现。

  如下图:首先通过GET方法访问/well-known-uri(1)获得当前所有资源(2),然后选择其中一个资源名FooService通过Get方法访问/well-known-uri/foo(3),这样得到foo下的资源列表。

rest

  foo可能是一个领域模型或其他代表业务核心的资源,假设foo是订单,用户如果希望改变订单状态,比如撤销订单,一旦点按撤销订单按钮,客户端将向/well-known-uri/foo/reverse发出PUT命令(5),代表撤销订单,这其实一个修改订单状态的命令。

  客户端再次发出GET命令(6),获得状态已经改变的结果。

  值得注意的是,当发出PUT命令后,不是通常由服务器端立即返回业务操作结果,而是返回Http的200,表示PUT操作完成,具体业务结果必须由客户端再次根据第三步获得的资源列表中URI资源,再次由客户端发出查询命令获得(6)。

 

 

文章和教程:

10个有关RESTful API良好设计的最佳实践

六个强大的创建RESTful服务的Java框架

为什么RESTful微服务和异步编程是未来趋势?

微服务架构快速指南

QBit微服务microservice教程

Netflix hystrix入门教程

使用Dropwizard开发轻量RESTful服务

Dropwizard与Spring Boot比较

使用vert.x 2.0, RxJava 和 mongoDB创建一个简单的RESTful服务

MEAN: AngularJS + NodeJS的REST API开发教程

基于Fibers开发Node.js的ExpressJS Restful服务

用Jersey开发RESTful服务

JavaEE 7的RESTful web服务

使用Apache CXF开发RESTful服务

Spring RESTful服务源码案例下载

REST与DDD

为什么要使用MVC+REST+CQRS架构

没有人真正理解REST or HTTP

REST真相

REST vs. SOAP

各种Java序列化性能比较

Java应用服务器死了

使用Scala和Spray实现REST

使用Scala的Akka HTTP,Akka Stream和Reactive Mongo建立REST服务

Lagom是一个集成ES/CQRS的Reactive微服务框架

使用Spring Cloud和Reactor在微服务中实现EventSourcing

一个分布式异步RESTful框架原型案例代码

JSON Web Tokens(JWT)教程

用啤酒和乐高解释什么是API

微服务API管理模式

综合Twitter、Github等各大网站API设计经验:RESTful API实用设计与最佳实践 - Vinay Sahni

 

相关专题

API设计专题

#微服务

更多REST RESTful架构

云计算

云原生

技术架构

分布式系统

分布式架构

分布式CAP定理

分布式共识一致性教程

NoSQL数据库

中台数据工程教程

软件弹性工程与设计

分布式事务

分布式事务教程