随着移动互联网的兴起,RESTful风格的API设计也随之流行起来,但咱们说了那么多RESTful设计,它究竟是什么?本篇文章带你们来了解一下它的真实面目。小程序
“资源”是RESTful中最核心的概念之一。在RESTful概念中,互联网中的每同样信息均可以定义为资源,好比文本、图片、音频、视频等。而这些资源又均可以对应一个特定的URI(统一资源定位符),URI为每个资源的地址或独一无二的识别符。微信小程序
针对上面的“资源”,咱们要进行相应的呈现,并且能够采用多种的呈现形式,而这些呈现形式就叫作“表现层”。服务器
就拿文本为例,咱们能够呈现为JSON格式、XML格式、HTML格式,甚至二进制格式等。这就是表现层所作的事情。微信
资源一般放在服务器端,而客户端对服务器资源的增、删、改、查等操做,便涉及到资源状态的转化。这个过程即是“ 状态转化”。网络
咱们以HTTP协议为例(RESTful不只仅适用HTTP协议,只不过常常以HTTP协议为陪衬),客户端可经过一些操做让服务器端的资源发生变化。app
而这整个过程,即是“表现层状态转化”。ide
在HTTP中,提供了四种常见的操做方式:GET、POST、PUT、DELETE。post
这四种操做方式分别对应四种基本操做:GET用来获取资源,POST用来新建资源(也能够用于更新资源),PUT用来更新资源,DELETE用来删除资源。ui
这是由于RESTful风格的设计拥有如下特色:结构清晰、符合标准、易于理解、扩展方便。spa
试想一下,若是采用传统的JSP模式,页面内容和代码混合在一块儿,而此时项目功能需新增移动端、微信小程序等其余客户端,是否须要从新定义接口?
而采用RESTful的定义,不只结构清晰,更重要的是易于扩展、适用性更普遍。
以用户(User)的增删改查为例,咱们能够设计出一下接口形式:每列分别对应,(请求类型:请求地址:功能描述)
看起来是否是简洁、清晰、方便不少?
若是再和SpringBoot结合起来,那就更加方便。下面展现部分经过SpringBoot来实现Controller层的代码。
public class RestfulController {
private UserService userService;
/** * 建立用户操做 */ public User addUser(User user) { return userService.addUser(user); }
/** * 获取所需用户操做 */ public List<User> listUser() { return userService.findAll(); }
/** * 更新用户 */ public User update(User user) { return userService.update(user); }
/** * 修改用户名 */ public User updateUsername(User user) { return userService.updateUsername(user); }
/** * 获取用户 */ public User get( Long id) { return userService.findById(id); }
/** * 删除用户 */ public void delete( Long id) { userService.delete(id); }}