SpringBoot——RESTful风格以及如何快速发送不同方式的请求

news2024/12/22 20:51:45

RESTful风格:

简单来说,RESTful就是一种将请求方式融合到路径中的一种请求路径书写风格,注意这里是风格,不是规定,我们也可以不使用他或者不是非常严格的按照他规定的样式来写,但是由于行业中大多数的人在编程的时候都按照这种方式进行书写,所以就变成了一种约定俗成的事情。

首先我们先来讲RESTful风格的特点,然后再来讲如何将我们之前的请求方式变成RESTful风格。RUST风格有一个最明显的特点就是将参数放在请求路径中,我们可以将之前的请求方式与RESTful风格进行对比就非常的明显了:

### 传统风格
PUT http://localhost:8080/users?id=1

### RUST风格
PUT http://localhost:8080/users/1

在之前,我们的路径和参数之间使用问号”?“分隔,并且使用“参数名=参数值”的方式,那么RESTful风格就是将参数当作路径的一部分,参数和路径之间依然是使用斜杠作为连接符。

那么介绍完了请求路径,那么如何去访问并获取里面的数据呢?方法也非常的简单,大体分为以下几个步骤:

1、在浏览器发送请求:

首先我需要构建出一个controller:

package com.springBoot.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/books")
public class bookController {
    @GetMapping
    public String doManin(){
        System.out.println("请求成功!");
        return "index";
    }
}

这里介绍一下在编写RESTful风格的请求的时候,我们的Controller其实也是有一套自己的编写的规范的,比如我们在使用注解的时候要修改成@RestController,这其实是两个注解的结合,是@ResponseBody和@controller的结合,我们点进去这个注解也可以发现:

他里面其实就是运用了这两个注解来完成这个效果,是什么意思呢,就需要我们回忆一下我们之前在学习Spring的时候的响应相关的知识,@ResponseBody表示所有的返回值都是以字符串的方式进行相应的,也就是当我们把这个注解应用在类上的时候,这个类中的所有的方法都会带上@ResponseBody注解,返回值也都是直接以字符串的形式出现在页面上。

2、在浏览器访问我们的路径:

这个路径是写在类上的,所以我们访问的时候要直接访问类上的@RequestMapping中的值,这里我的值是/books:

  

首先是在页面上看到了我们的返回值,其次在控制台看到了我们的输出语句,这就表示请求正常。

3、获取数据:

RESTful风格的参数是写在路径里的,那么我们要如何去获取这个参数呢?首先我们要在方法的请求路径映射中定义参数的占位符,也就是在参数在请求路径的位置:

比如此时如果我要传递一个参数,那么完整的路径就是:

http://localhost:8080/users/参数

也就是说参数是在我的路径的最后一位,那么我在获取的时候,控制器的方法的请求映射就可以这么写:

我是用一个占位符,这个占位符的格式就是一对花括号,中间使用一个变量去占位,代替我要传递的参数,如何获取,按照之前我们的经验,沃恩要在形参中添加变量,注意这个变量的名字要和我们的占位符相同

设定了形参,还没有完成,还需要使用一个注解去指明我的参数是来自于请求路径,这个注解叫做:@PathVariable

这样一个接受请求参数的Controller就完成了,我们在方法输出我们重启服务器,并发送一个带有参数的请求,并且我们在Controller中将我们输入的参数输出到页面中,并且打印在控制台上:

那么现在,我们就看到了参数已经传递进来了,并且我们也获取到了。

RESTful的编码规范: 

之前我们说过,RESTful除了在请求路径中有不同的规范之外,还有一个重要的特点就是,我们在名明明请求路径的时候不写名词,比如find,delete,update这种一看就知道是什么操作的词语,我们直接用名字,描述操作的对象,比如findUserById这是明显的我们传统方式的请求路径,RESTful直接就是users,注意要加s表示复数操作,那么我们怎么知道或者如何区分这具体是什么操作呢?通过不同的请求方式:

package com.springBoot.controller;

import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/users")
public class userController {
    @GetMapping
    public String selectById(){
        System.out.println("select By Id ……");
        return "index";
    }
    @PostMapping
    public String selectAll(){
        System.out.println("select All");
        return "index";
    }
    @DeleteMapping
    public String delete(){
        System.out.println("DELETE");
        return "index";
    }
    @PutMapping
    public String update(){
        System.out.println("UPDATE");
        return "index";
    }
}

这是一个比较标准的RESTful风格的编码方式,他将请求路径写在类上,根据不同的请求方式调用不同的方法,而不同的方法去做不同的操作,其中我们主要会用到四种方法:

GET:查询操作

DELETE:删除操作

PUST:保存

PUT:修改

常用的四种请求方式对应四种不同的操作,而路径都是统一的。

快速发送不同方式的请求:使用PostMan

PostMan是一款可以快速发送不同请求方式的请求的工具,他的界面是这样的:

上面是请求的方式和路径,右边蓝色的是发送请求的按钮,下面就是请求结果,我们就来发送不同的请求方式:

 

使用postman可以快速发送不同的请求,当然如果你喜欢在IDEA里面就完成各种操作,那么IDEA里面也是可以完成对请求的模拟的:

 快速发送不同方式的请求:使用IDEA:

1、创建一个请求文件:

 在这里IDEA支持直接创建一个请求文件:

这个文件的编写格式是前面写请求方式,大写小写都可以,好像是推荐使用大写,然后后面跟上请求路径。

多个请求之间用三个井号分开,不然他会认为这是一个请求,然后就可以点击前面的绿色三角符号发送请求:

从上到下依次是请求头,请求体以及请求的状态码。

还有很多的工具可以使用,按照个人习惯进行选择即可。

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

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

相关文章

Boost电路的参数设计

本文以实例方式介绍Boost电路的参数设计方法。项目需求:12V升压至50V,功率35W。 先看示例电路图,如下图所示。 在进行具体的参数计算之前,我们先简要的分析一下Boost电路的工作原理。 1、我们假设,C3和C4的容值相对于负…

发挥数据潜能,为在金融服务行业进行创新做好准备

发挥数据潜能,为在金融服务行业进行创新做好准备 为何选择 NetApp 的金融服务? 作为云专家,我们将确保始终适时适地提供财务数据,以推动转型。我们将消除数据孤岛,提供实时的市场就绪分析,借助经验证的 AI…

易基因:多组学关联分析及组学分子实验验证方法(表观组+转录组+微生物组)|干货系列

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 生物过程具有复杂性和整体性,单组学数据难以系统全面解析复杂生理过程的分子调控机制。而多组学(Multi-omics)联合分析可同时实现从“因”和“果”两个…

Cartographer源码阅读---后端优化思路

Cartographer的后端优化是借用SPA(Sparse Pose Adjustment)优化算法的思想. 其主要步骤如下: 确定两个节点在global坐标系下的相对位姿变换.通过其它方式再次获取这两个节点的相对位姿变化对这两个相对位姿变换的差的最小二乘问题进行求解进行求解后得到…

nifi DBCPconnectpool 连接oracle 死链接

nifi DBCPconnectpool 连接oracle 死链接 问题展示问题解决后言官网中文网Groovy脚本学习 问题展示 原因,nifi 连接oracle因为网络波动出现死链接,我的数据同步停止于前一天晚上一点半左右,因为最近一致出现这个问题,综合判断之下…

SAP HUM 嵌套HU初探 II (TCODE:POP1, POF1,HU03) <转载>

SAP HUM 嵌套HU初探 II 这里以物料号ZFG0003为例,做一个阐述。 1,维护好包装指令主数据(POP1/POP2/POP3) 包装指令ZFG0003A 包装指令ZFG0003B 然后维护好PI 确定记录主数据(POF1/POF2/POF3) 2, COR1/…

老域名挖掘方法-网站老域名批量查询

老域名挖掘方法 老域名对于SEO优化非常重要,可以提高网站的排名和曝光度。因此,很多SEO从业者会使用专门的老域名挖掘工具来挖掘高质量的老域名。以下介绍一种常用且有效的老域名挖掘方法,以及推荐一款优秀的老域名挖掘工具——147SEO老域名…

饿了么在即时零售的胜算

平台商家越多,消费者的选择就会越多,然后就会吸引更多的消费者来消费。与此同时,平台商家越多,平台订单量就会越多,相应的骑手的订单配送响应时效就越快,然后还会吸引更多的商家入驻。如此循环,…

Rust每日一练(leetDay0001) 两数之和、两数相加、最长子串

目录 1. 两数之和 Two Sum 🌟 2. 两数相加 Add Two Numbers 🌟🌟 3. 无重复字符的最长子串 Longest substring without repeating characters 🌟🌟 🌟 每日一练刷题专栏 🌟 Rust每日一练…

如何在Windows11下开启IE浏览器

在Windows11下开启IE浏览器 Microsoft 发布 Windows 11 之后,系统使用基于 Chromium 内核的 Edge 浏览器来代替被人唾骂已久的 IE 浏览器,IE 浏览器入口也已经被屏蔽掉了。通过任何常规方式打开 IE 浏览器都会自动使用 Edge 浏览器打开。 最新消息&…

语音与语言处理技术交流会(深圳)

嘉宾介绍 嘉宾介绍:罗艺,2021年在美国哥伦比亚大学获得博士学位后加入腾讯AI Lab Shenzhen任高级研究员,研究方向主要为音频前端处理,包括但不限于音频分离、单/多通道语音增强等。 报告题目:腾讯AI Lab音频与语音前端…

网站备案:阿里云ICP备案服务码是什么?申请流程来了

阿里云备案服务码是什么?ICP备案服务码怎么获取?阿里云备案服务码分为免费和付费两种,申请备案服务码是有限制条件的,需要你的阿里云账号下有可用于申请备案服务码的云产品,如云服务器、建站产品、虚拟主机等&#xff…

关于扇区、簇、块、页等概念的区分

1、什么是扇区和(磁盘)块? 物理层面:一个磁盘按层次分为 : 磁盘组合 -> 单个磁盘 -> 某一盘面 (platter)-> 某一磁道 (track)-> 某一扇区(secto…

未针对内部单位 D 的语言 ZH 定义任何语言特定的单位

在写ABAP程序的时候调用功能函数或者调用BDC的时候会要求输入单位。当我们正常输入单位后调用函数就会报错 提示:未针对内部单位 ** 的语言 ZH 定义任何语言特定的单位。但是我们检查表T006和T006A两个后台表的时候, 发现单位在两个表中都存在&#xff0…

vue通过sync标识符 在子组件中更便捷的修改父组件的值

这里 我们创了一个vue2 项目 根组件 App.vue参考代码如下 <template><div><span>{{ name }}</span><text-data :name "name" /></div> </template><script> import textData from "/components/textData&quo…

python网络爬虫笔记20:批量下载图片并将其转换为pdf文档

对于有些网页,你可以预览所有的页面内容,并且也可以通过F12获取到页面的URL,但是面对动辄几十页的图片,手动下载显然是不可行的。 在这里我们给出一个人机交互的通用解决策略。 第一步:使用F12获取页面所有感兴趣图片的URL 这一步看似简单,其实也暗藏玄机。因为有些网…

Java的继承与组合

继承可以帮助实现类的复用。 所以&#xff0c;很多开发人员在要复用代码时会自然的使用类的继承的方式。 但是&#xff0c;遇到想要复用的场景就直接使用继承&#xff0c;这样做是不对的。长期大量的使用继承会给代码带来很高的维护成本。 本文将介绍一种可以帮助复用的新的…

速锐得解码奔驰Actros 系列网关CAN总线应用车载互联微系统

近年来&#xff0c;改变信号处理方式的低成本高速电子电路和制造技术的进步推动了传感技术的发展。借助这些协同领域内的新发展&#xff0c;传感器和制造商可以采用一套全新的方法&#xff0c;如远程自监控和自校准系统智能化&#xff0c;来提高产品的性能。 类似的&#xff0c…

数据结构与算法lab1-哈工大

title: 数据结构lab1-一元多项式的代数运算 date: 2023-05-16 11:42:26 tags: 数据结构与算法 git地址&#xff1a;https://github.com/944613709/HIT-Data-Structures-and-Algorithms 哈尔滨工业大学计算机科学与技术学院 实验报告 课程名称&#xff1a;数据结构与算法 课…

探索iOS之AudioUnit音效框架

iOS的AVAudioUnit提供的音效包括&#xff1a;混响、延迟、均衡器、失真、变速、变调等。按照类型划分为Audio Effect和Time Effect&#xff0c;其中Audio Effect包括混响、延迟、均衡器和失真&#xff0c;而Time Effect主要是变速、变调。 一、音效应用层框架 音效的应用层框…