手搭手SpringBoot之REST接口风格

news2025/1/19 14:31:58

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+"的用户被删除了";

    }

}

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

配置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>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/427910.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

gRPC-Go源码解读二 传输层数据处理流程

本篇文章主要介绍gRPC Client传输层的处理流程&#xff0c;如有疑问&#xff0c;欢迎指教。 gRPC版本&#xff1a; 1.54.0-dev gRPC基于http2传输&#xff0c;传输层主要处理http2相关的内容。RFC7540制定了http2协议规范&#xff0c;因此&#xff0c;这部分代码的逻辑绝大部分…

科普|FCC的卫星标准 为什么又说是FCC Part25呢?

我们今天介绍的FCC的卫星标准&#xff0c;在美国是作为一种法律规定&#xff0c;具有法律效力的标准&#xff0c;通常又称为法规文件。 01 — FCC Part 25 我们先从CFR说起&#xff0c;《美国联邦法规》&#xff08; Code of Federal Regulations &#xff0c;简称CFR&#…

【JAVAEE】网络原理之网络发展史

目录 &#x1f381;1. 独立模式 &#x1f383;2. 网络互连 &#x1f388;2.1 局域网 LAN ✨2.1.1 基于网线直连 &#x1f451;2.2.2 基于集线器组建 &#x1f48b;2.2.3 基于交换机组建 &#x1f457;2.2.4 基于交换机与路由器组建 &#x1f388;2.2 广域网 21世纪是一…

我的第一台电脑------计算机类专业学生购置电脑的一些个人心得

⬜⬜⬜ &#x1f430;&#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea;(*^▽^*)欢迎光临 &#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea;&#x1f430;⬜⬜⬜ ✏️write in front✏️ &#x1f4dd;个人主页&#xff1a;陈丹宇jmu &am…

Web 攻防之业务安全:接口参数账号篡改测试(修改别人邮箱 || 手机号为自己的)

Web 攻防之业务安全&#xff1a;接口参数账号篡改测试. 业务安全是指保护业务系统免受安全威胁的措施或手段。广义的业务安全应包括业务运行的软硬件平台&#xff08;操作系统、数据库&#xff0c;中间件等&#xff09;、业务系统自身&#xff08;软件或设备&#xff09;、业务…

HCIP之LSP静态搭建实验

目录 HCIP之LSP静态搭建实验 实验图 基本配置 R1 R2 R3 R4 配置方法 搭建从1.0 - 4.0 网段的LSP 搭建静态路由 配置MPLS 配置LSR - ID 激活MPLS 全局激活 接口激活 搭建静态LSP 搭建入站LSR R1配置 搭建中转LSR R2配置 R3配置 搭建出站LSR R4配置 搭建从…

Java语言-----泛型的认识

目录 一.什么是泛型 二.泛型类的使用 2.1泛型类的定义 2.2泛型类的数组使用 三.泛型的上界 四.泛型的方法 五.泛型与集合 &#x1f63d;个人主页&#xff1a; tq02的博客_CSDN博客-C语言,Java领域博主 &#x1f308;梦的目标&#xff1a;努力学习&#xff0c;向Java进发…

八大数据库全面对比,让你明确数据库怎么去选!

随着互联网和大数据时代的到来&#xff0c;各种数据管理技术也在迅猛发展。而在数据管理技术中&#xff0c;数据库无疑是最重要的一环。现今市场上涌现出了众多数据库产品&#xff0c;不同的数据库产品针对不同的业务需求和应用场景&#xff0c;有着不同的特点和优势。本文将介…

【双碳系列】LEAP碳排放预测、LCA生命周期、GAMS电力、CGE一般均衡模型

本文围绕双碳专题分为五大内容&#xff0c;分别为&#xff1a; 基于LEAP模型的能源环境发展、碳排放建模预测及不确定性分析实践应用 (qq.com) 双碳目标下农田温室气体排放模拟实践技术应用 (qq.com) 环境影响与碳排放生命周期评估应用及案例分析 (qq.com) “双碳”目标下资…

如何实现一个可靠的 UDP

QUIC是如何实现可靠传输的&#xff1f; 市面上的基于UDP协议实现的可靠传输协议的成熟方案&#xff0c;应用在HTTP/3上。 UDP报文头部和TCP报文头部夹着三层头部 Packet Header Packet Header细分这两种&#xff1a; Long Packet Header 用于首次建立连接Short Packet Hea…

深元ai智慧工地视频分析盒子提高建筑施工现场安全效率

随着社会的快速发展&#xff0c;建筑行业安全问题日益受到重视。为了解决传统人工巡查的诸多问题&#xff0c;AI智慧工地视频分析盒子应运而生&#xff0c;通过人工智能技术&#xff0c;全面提高建筑施工现场的安全工作效率。 一、AI智慧工地视频分析盒子解决传统巡查的痛点 …

【产品设计】Android 和 IOS 的交互设计对垒

在手机操作系统百花齐放的年代&#xff0c;也是产品经理最头疼的年代&#xff0c;因为需要根据不同的操作系统做出不同的设计。而如今&#xff0c;手机操作系统基本只剩下安卓和IOS两大阵营&#xff0c;只需处理好安卓和IOS交互上的差异部分就可以做好产品设计了。 手机操作系统…

不良事件上报系统源码 有演示,已在多家医院运营多年

不良事件上报系统源码&#xff0c;医院安全不良事件管理系统源码 技术架构&#xff1a;前后端分离&#xff0c;仓储模式&#xff0c;BS架构&#xff0c;有演示&#xff0c;已在多家医院完美运营。 相关技术&#xff1a;PHPvscodevue2elementlaravel8mysql5.7 文末获取联系&am…

【每日一练】基础题目练习

1、打印1-100之间所有的素数 素数&#xff1a;(也说质数) 数学上指在大于1的整数中只能被1和它本身整除的数。如2、3、5、7、11、43、109。过去。 方法一&#xff1a; 如果数据i能够被[2 &#xff0c;qsrt(i)]之间的数整除&#xff0c;则表示这个数不是素数。 当一个数na*b时&a…

CVE漏洞复现-CVE-2022-22947-Spring Cloud Gateway RCE

CVE-2022-22947-Spring Cloud Gateway RCE 基本介绍 微服务架构与Spring Cloud 最开始时&#xff0c;我们开发java项目时&#xff0c;所有的代码都在一个工程里&#xff0c;我们把它称为单体架构。当我们的项目的代码量越来越大时&#xff0c;开发的成员越来越多时&#xff…

Vivdao FFT IP核调试记录

最近一时兴起&#xff0c;看了下Vivado版本下的FFT IP核&#xff0c;发现和ISE版本下的FFT IP核有一些差别&#xff0c;貌似还不小。做了个简单的仿真&#xff0c;Vivado仿真结果竟然和Matlab仿真结果对不上&#xff0c;废了九牛二虎之力研究datasheet、做仿真&#xff0c;终于…

SpringBoot JSON全局日期格式转换器

参考资料 SpringBoot日期格式转换&#xff0c;SpringBoot配置全局日期格式转换器在Spring Boot中定制Jackson ObjectMapper详解SpringBoot中jackson日期格式化问题(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS not turning off timestamps) 目录需求分析一. 前期准备1.1 …

ARM简单程序设计【嵌入式系统】

ARM简单程序设计【嵌入式系统】前言推荐ARM简单程序设计创建项目注意事项顺序结构程序两数之和分支结构程序符号函数循环结构程序已知循环次数未知循环次数两重循环冒泡排序子程序设计①寄存器传递参数方式②存储区域传递参数方式③ 堆栈传递参数方式最后前言 2023-4-6 20:26:…

一文看懂多模态大型语言模型GPT-4

文章目录前言什么是GPT-4GPT-4 VS GPT-3.5GPT-4与其他模型对比GPT-4视觉输入GPT-4局限性写在最后前言 近日&#xff0c;OpenAI发布了最新版的生成预训练模型GPT-4。据官方介绍&#xff0c;最新一代的模型是一个大模型&#xff0c;性能比CPT-3.5强悍很多&#xff0c;不仅仅是接…

泛微数字化安全管理,实现标准化、智能化管理,数据可视化分析

企业安全管理需求提升&#xff1a; 随着国家政策与技术的双重驱动&#xff0c;企业当前的安全管理需求&#xff0c;从标准化管理&#xff0c;逐步发展到智能、可视、可分析的全程数字化安全管理&#xff0c;落地风险分级管控、隐患排查治理的双重预防机制。 国家发布的《企业…