RESTful

相信在座的各位对于RESTful都是略有耳闻,那么RESTful到底是什么呢?

REST(Representational State Transfer)表述性状态转移是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是RESTful。需要注意的是,REST是设计风格而不是标准。REST通常基于使用HTTP,URI,和XML(标准通用标记语言下的一个子集)以及HTML(标准通用标记语言下的一个应用)这些现有的广泛流行的协议和标准。

也许这段话有些晦涩难懂,换个角度我们来解释一下RESTful。

首先来看一组例子:

//查询所有人员(传统)
localhost:8088/api/user/findAll 请求方式:GET
//查询所有人员(RESTful)
localhost:8088/api/users 请求方式:GET //修改人员(传统)
localhost:8088/api/user/update 请求方式:POST
//修改人员(RESTful)
localhost:8088/api/users 请求方式:PUT //添加人员(传统)
localhost:8088/api/user/add 请求方式:POST
//添加人员(RESTful)
localhost:8088/api/users 请求方式:POST //删除人员(传统)
localhost:8088/api/user/delete 请求方式:DELETE
//删除人员(RESTful)
localhost:8088/api/users 请求方式:DELETE

我们通常称地址栏中输入的地址为URI(Uniform Resource Identifier),翻译成中文就是统一资源标识符

资源,我们在浏览器页面上看到的东西都可以称之为资源,比如图片,文字,语音等等。

而URI就是用于定位这些资源的位置的,RESTful风格的接口中只出现了表示资源的名词,关于这个资源的操作,通过HTTP内置的几种请求类型来区分。同一个路径localhost:8088/api/users,因为请求方式的不同,而去找寻不同的接口,完成对资源状态的转变。

总结一下,REST就是指对同一个URI的资源的不同请求方式(GET,POST,PUT,DELETE)(表述)下的做出的不同的操作(查,增,改,删),改变的是资源的状态,即表述性状态转移。 一个符合REST风格的URI就可以称之一个RESTful的接口。

看到这里,相信RESTful已经了解的差不多了,下面我们来看看在Spring Boot中如何去使用

SpringMVC 构建RESTful接口

SpringMVC中给我们提供了一些注解,可以帮助我们去构建RESTful的接口,下面来直接看代码:

package indi.viyoung.viboot.restful.controller;

import indi.viyoung.viboot.restful.entity.User;
import indi.viyoung.viboot.restful.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import java.util.List; /**
* <p>
* 前端控制器
* </p>
*
* @author viyoung
* @since 2019-01-23
*/
@RestController
@RequestMapping("/users")
@Slf4j
@CrossOrigin
public class UserController { @Autowired
private UserService userService; @GetMapping
public List<User> get() {
log.info("GET方法执行。。。");
return userService.list();
} @GetMapping(value = "/{id}")
public User get(@PathVariable String id) {
log.info("GET..{}...方法执行。。。",id);
return userService.getById(id);
} @PostMapping
public void post() {
log.info("POST方法执行。。。");
} @PutMapping
public void put() {
log.info("PUT方法执行。。。");
} @DeleteMapping
public void delete() {
log.info("DELETE方法执行。。。");
}
}

这里的工程创建可以参照Spring Boot 2.x(五):Mybatis-Plus + Spring Boot

下面我们也许需要一个前端的工程或者POSTMAN等测试接口的工具来发送不同的请求,我这里已经写好了一个前端的基于vue的工程,有需要的可以去下载一下:viboot-front。记得顺手点个star哟~



依次点击这五个按钮,可以看到后台的控制台分别打印出了不同的语句:



原创文章,才疏学浅,如有不对之处,万望告知!

公众号

您的推荐就是对我最大的支持!

Spring Boot 2.x (十):构建优雅的RESTful接口的更多相关文章

  1. Spring Boot中使用Swagger2构建强大的RESTful API文档

    由于Spring Boot能够快速开发.便捷部署等特性,相信有很大一部分Spring Boot的用户会用来构建RESTful API.而我们构建RESTful API的目的通常都是由于多终端的原因,这 ...

  2. Spring Boot 中使用 Swagger2 构建强大的 RESTful API 文档

    项目现状:由于前后端分离,没有很好的前后端合作工具. 由于接口众多,并且细节复杂(需要考虑不同的HTTP请求类型.HTTP头部信息.HTTP请求内容等),高质量地创建这份文档本身就是件非常吃力的事,下 ...

  3. Spring Boot中使用Swagger2构建强大的RESTful(最新全,无坑)

    1:说明 网上这类文章 太多, 一搜一大把 ,但是要不是知识太过于老旧,就是配置没有说名清楚,你的项目按照他的配置却不能正常运行: 所以本文的目的: 配置swagger 2  那swagger 1 不 ...

  4. Spring Boot 系列(七)Swagger2-生成RESTful接口文档

    Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件的方法,参数和模型紧密集成到服 ...

  5. springboot集成swagger2,构建优雅的Restful API

    swagger,中文“拽”的意思.它是一个功能强大的api框架,它的集成非常简单,不仅提供了在线文档的查阅,而且还提供了在线文档的测试.另外swagger很容易构建restful风格的api,简单优雅 ...

  6. (转)第十一篇:springboot集成swagger2,构建优雅的Restful API

    声明:本部分内容均转自于方志明博友的博客,因为本人很喜欢他的博客,所以一直在学习,转载仅是记录和分享,若也有喜欢的人的话,可以去他的博客首页看:http://blog.csdn.net/forezp/ ...

  7. (转) SpringBoot非官方教程 | 第十一篇:springboot集成swagger2,构建优雅的Restful API

    swagger,中文“拽”的意思.它是一个功能强大的api框架,它的集成非常简单,不仅提供了在线文档的查阅,而且还提供了在线文档的测试.另外swagger很容易构建restful风格的api,简单优雅 ...

  8. SpringBoot非官方教程 | 第十一篇:springboot集成swagger2,构建优雅的Restful API

    转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/11/springboot-swagger2/ 本文出自方志朋的博客 swa ...

  9. spring boot / cloud (二十) 相同服务,发布不同版本,支撑并行的业务需求

    spring boot / cloud (二十) 相同服务,发布不同版本,支撑并行的业务需求 有半年多没有更新了,按照常规剧本,应该会说项目很忙,工作很忙,没空更新,吧啦吧啦,相关的话吧, 但是细想想 ...

随机推荐

  1. 调用获取学生信息的接口,保存到excel里面

    # 2.http: // doc.nnzhp.cn / index.php?s = / 6 & page_id = 14# 调用获取学生信息的接口,保存到excel里面 import requ ...

  2. box-shadow 画叮当猫

    值 描述 h-shadow 必需.水平阴影的位置.允许负值 v-shadow 必需.垂直阴影的位置.允许负值 blur 可选.模糊距离 spread 可选.阴影的尺寸 color 可选.阴影的颜色.请 ...

  3. History Api使用演示

    h5新增的一个特性即在history对象上 新增了pushState 和 replaceState 接口 配合在window对象上新增的popState事件使用 为什么要用它:因为通过historya ...

  4. vuex学习

    Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 简单的理解就是你在state中定义了一个数 ...

  5. Linux Rabbit的使用

    安装RabbitMQ 1.安装Erlang yum -y install epel-release yum -y update yum -y install erlang socat yum -y i ...

  6. 微信小程序开发工具中快捷键

    微信小程序开发工具表面上是没有更多的样式类的工具,例如缩进.隐藏代码什么的. 现在总结一下小程序开发工具常用的一些快捷键: 格式调整 Ctrl+S:保存文件Ctrl+[, Ctrl+]:代码行缩进Ct ...

  7. 问题:这个新申请的内存为什么不能free掉?(已解决)

    一.问题描述 先上代码, /*** 省略 ***/ uChar *base64 = NULL; /*** 省略 ***/ base64 = (一段内存) /*** 省略 ***/ base64 = s ...

  8. JAVA 热文

    Java技术面试篇 Javase基础面试题(1) Javase基础面试题(2) Javase基础面试题(3) Javase基础面试题(4) Javase基础面试题(5) Javaweb面试题(6) J ...

  9. Linux常用服务器搭建

    1.Linux常用服务器构建-ftp服务器 ftp服务器 FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”. 用于Internet上的控制文件 ...

  10. Thread.join(), CountDownLatch、CyclicBarrier和 Semaphore区别,联系及应用

    在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法, 由于 ...