手搭手SpringBoot之REST接口风格

简介: REST即表述性状态传递(英文:Representational State Transfer,简称REST,中文:表示层状态转移)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。

REST一种软件架构风格


REST即表述性状态传递(英文:Representational State Transfer,简称REST,中文:表示层状态转移)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。


在三种主流的Web服务实现方案中,因为REST模式的Web服务与复杂的SOAP和XML-RPC对比来讲明显的更加简洁,越来越多的web服务开始采用REST风格设计和实现。例如,Amazon.com提供接近REST风格的Web服务进行图书查找;雅虎提供的Web服务也是REST风格的。


REST中的要素:用REST表示资源和对资源的操作。在互联网中,表示一个资源或者一个操作。


资源用URL表示。


资源:查询资源、创建资源、更新资源、删除资源


表示层(视图层)状态转移:显示资源,通过视图页面,jsp等。


状态:资源变化。 转移:资源变化。


API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。API除了有应用“应用程序接口”的意思外,还特指 API的说明文档,也称为帮助文档。


——————————————————————————————————————————


RESTful的注解


@PathVariable注解


   /**

    * @PathVariable:获取url中的数据

    *  value :路径变量名

    *  位置: 放在控制器方法的形参前面

    *  {id}定义路径变量

    */


获取url中的数据


@GetMapping注解


接收和处理get请求。等同于RequestMapping(method=RequestMethod.GET)


@PostMapping注解


接收和处理Post请求。等同于RequestMapping(method=RequestMethod.POST)


@PutMapping注解, Request method 'POST' and 'GET' not supported


支持put请求方式。等同于RequestMapping(method=RequestMethod.PUT)


@DeleteMapping注解 Request method 'POST' and 'GET' not supported


接收delete方式的请求,等同于RequestMapping(method=RequestMethod.DELETE)


@RestController注解


@Controller与@ResponseBody的组合


——————————————————————————————————————————


用例


@RestController

public class RestControllerDemo {

   @Resource

   private StaffService service;

   /**

    * @PathVariable:获取url中的数据

    *  value :路径变量名

    *  位置: 放在控制器方法的形参前面

    *  {id}定义路径变量

    */

   @GetMapping("/Info/{id}")

   public String getInfo(@PathVariable("id") int id){

       //根据id查询信息

       Staff staff = service.selectById(id);

       return staff.getId()+staff.getName();

   }

   @PostMapping("/create/Staff/{id}/{name}")

   public String createStaff(@PathVariable("id") int id,@PathVariable String name){

       //执行sql----

       return "获得到数据:"+id+" : "+name;

   }

   @PutMapping("/modifyStaff/{id}/{name}")

   public String modifyStaff(@PathVariable("id") int id,@PathVariable String name){

       //执行sql语句 UPDATE staff SET name=#{name}  WHERE  id=#{id}

   return "更新了:"+id+" : "+name;

   }

   @DeleteMapping("/Delete/{id}")

   public String DelStaff(@PathVariable("id") int id){

       //执行sql语句 UPDATE staff SET name=#{name}  WHERE  id=#{id}

       return "id为"+id+"的用户被删除了";

   }

}

2.png




建议使用Postman测试get,post,put,delete

1.png



配置html支持put和delect请求方式。


HiddenHttpMethodFilter支持将post请求转为put、delete请求

Springboot框架启用HiddenHttpMethodFilter


application.properties配置


#启用HiddenHttpMethodFilter过滤器

spring.mvc.hiddenmethod.filter.enabled=true

使用方式

Html页面

Put

<form action="/boot/modifyStaff/003/张三" method="post">

   <input type="hidden" name="_method" value="put">

   <input type="submit" value="提交">

</form>

Delete

<form action="/boot/Delete/001" method="post">

   <input type="hidden" name="_method" value="delete">

   <input type="submit" value="提交">

</form>


Controller


RUL:地址必须唯一


@PutMapping("/modifyStaff/{id}/{name}")

public String modifyStaff(@PathVariable("id") int id,@PathVariable String name){

   //执行sql语句 UPDATE staff SET name=#{name}  WHERE  id=#{id}

return "更新了:"+id+" : "+name;

}

@DeleteMapping("/Delete/{id}")

public String DelStaff(@PathVariable("id") int id){

   //执行sql语句 DELETE

   return "id为"+id+"的用户被删除了";

}


SpringMVC启用HiddenHttpMethodFilter


需在web.xml中配置


<filter>

   <filter-name>HiddenHttpMethodFilter</filter-name>

   <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>

</filter>

<filter-mapping>

   <filter-name>HiddenHttpMethodFilter</filter-name>

   <url-pattern>/*</url-pattern>

</filter-mapping>

目录
相关文章
|
1月前
|
JSON Java 网络架构
elasticsearch学习四:使用springboot整合 rest 进行搭建elasticsearch服务
这篇文章介绍了如何使用Spring Boot整合REST方式来搭建和操作Elasticsearch服务。
122 4
elasticsearch学习四:使用springboot整合 rest 进行搭建elasticsearch服务
|
19天前
|
Java 开发者 Spring
精通SpringBoot:16个扩展接口精讲
【10月更文挑战第16天】 SpringBoot以其简化的配置和强大的扩展性,成为了Java开发者的首选框架之一。SpringBoot提供了一系列的扩展接口,使得开发者能够灵活地定制和扩展应用的行为。掌握这些扩展接口,能够帮助我们写出更加优雅和高效的代码。本文将详细介绍16个SpringBoot的扩展接口,并探讨它们在实际开发中的应用。
37 1
|
25天前
|
存储 安全 Java
|
25天前
|
存储 算法 安全
SpringBoot 接口加密解密实现
【10月更文挑战第18天】
|
1月前
|
Web App开发 JavaScript Java
elasticsearch学习五:springboot整合 rest 操作elasticsearch的 实际案例操作,编写搜索的前后端,爬取京东数据到elasticsearch中。
这篇文章是关于如何使用Spring Boot整合Elasticsearch,并通过REST客户端操作Elasticsearch,实现一个简单的搜索前后端,以及如何爬取京东数据到Elasticsearch的案例教程。
174 0
elasticsearch学习五:springboot整合 rest 操作elasticsearch的 实际案例操作,编写搜索的前后端,爬取京东数据到elasticsearch中。
|
23天前
|
监控 Java 开发者
掌握SpringBoot扩展接口:提升代码优雅度的16个技巧
【10月更文挑战第20天】 SpringBoot以其简化配置和快速开发而受到开发者的青睐。除了基本的CRUD操作外,SpringBoot还提供了丰富的扩展接口,让我们能够更灵活地定制和扩展应用。以下是16个常用的SpringBoot扩展接口,掌握它们将帮助你写出更加优雅的代码。
42 0
|
2月前
|
SQL JSON Java
springboot 如何编写增删改查后端接口,小白极速入门,附完整代码
本文为Spring Boot增删改查接口的小白入门教程,介绍了项目的构建、配置YML文件、代码编写(包括实体类、Mapper接口、Mapper.xml、Service和Controller)以及使用Postman进行接口测试的方法。同时提供了SQL代码和完整代码的下载链接。
springboot 如何编写增删改查后端接口,小白极速入门,附完整代码
|
2月前
|
存储 前端开发 Java
springboot文件上传和下载接口的简单思路
本文介绍了在Spring Boot中实现文件上传和下载接口的简单思路。文件上传通过`MultipartFile`对象获取前端传递的文件并存储,返回对外访问路径;文件下载通过文件的uuid名称读取文件,并通过流的方式输出,实现文件下载功能。
springboot文件上传和下载接口的简单思路
|
2月前
|
存储 数据采集 Java
Spring Boot 3 实现GZIP压缩优化:显著减少接口流量消耗!
在Web开发过程中,随着应用规模的扩大和用户量的增长,接口流量的消耗成为了一个不容忽视的问题。为了提升应用的性能和用户体验,减少带宽占用,数据压缩成为了一个重要的优化手段。在Spring Boot 3中,通过集成GZIP压缩技术,我们可以显著减少接口流量的消耗,从而优化应用的性能。本文将详细介绍如何在Spring Boot 3中实现GZIP压缩优化。
310 6
|
1月前
|
存储 NoSQL Java
Spring Boot项目中使用Redis实现接口幂等性的方案
通过上述方法,可以有效地在Spring Boot项目中利用Redis实现接口幂等性,既保证了接口操作的安全性,又提高了系统的可靠性。
37 0