Restful风格

2023-11-07


前言

今天是四月份的最后一天,所以@别叫小宋来给大家分享一篇关于在这个月学习到的一个小知识点!希望可以帮助到正在学习期间的你。


一、Restful风格是什么?

Restful是一种软件开发中的设计风格、它不是标准,只是提供了一组设计原则和约束条件。正如我们现实生活中的靠右行驶一样,是一种行为规范。它主要用于客户端和服务器交互类的软件。使用这种风格设计的软件可以变得更加简洁、更有层次、更易于实现缓存等机制。

二、Restful风格里面的请求方式

1.Get

2.POST

3.PUT

4.DELETE

这四个在项目接口中分别代表的是查、增、改、删。

GET请求		                             对应             查询
http://ip:port/工程名/book/1		HTTP请求GET		表示要查询id为1的图书
http://ip:port/工程名/book		    HTTP请求GET		表示查询全部的图书

POST请求	对应	添加
http://ip:port/工程名/book		    HTTP请求POST	表示要添加一个图书

PUT请求		对应	修改
http://ip:port/工程名/book/1		HTTP请求PUT		表示要修改id为1的图书信息

DELETE请求	对应	删除
http://ip:port/工程名/book/1		HTTP请求DELETE		表示要删除id为1的图书信息

三、Restful风格的Controller如何实现

@Controller
public class RestfulController {

	@RequestMapping(value="/book/1",method=RequestMethod.GET)
	public String queryBookById() {
		System.out.println("根据id查询一本图书");
		return "/restful.jsp";
	}
	
	@RequestMapping(value="/book",method=RequestMethod.GET)
	public String queryBooks() {
		System.out.println("查询全部图书");
		return "/restful.jsp";
	}
	
	@RequestMapping(value="/book",method=RequestMethod.POST)
	public String addBook() {
		System.out.println("post请求  添加图书");
		return "/restful.jsp";
	}
	
	@RequestMapping(value="/book/1",method=RequestMethod.PUT)
	public String updateBook() {
		System.out.println("修改图书");
		return "/restful.jsp";
	}
	
	@RequestMapping(value="/book/1",method=RequestMethod.DELETE)
	public String deleteBook() {
		System.out.println("删除图书");
		return "/restful.jsp";
	}
	
}

四、Restful风格的增删改查实现

1.Get(查询)

   /***
     * 根据讲师id进行查询
     * @param id
     * @return
     */
    @ApiOperation(value ="根据ID查询讲师")
    @GetMapping("getTeacher/{id}")
    public R getTeacher(@PathVariable Integer id){
        EduTeacher eduTeacher = teacherService.getById(id);
        return R.ok().data("teacher",eduTeacher);
    }
}

2.Post(增加)

  /***
     * 添加讲师接口的方法
     * @param eduTeacher
     * @return
     */
    @ApiOperation(value = "添加讲师操作")
    @PostMapping("addTeacher")
    public R addTeacher(@RequestBody EduTeacher eduTeacher){
        boolean save = teacherService.save(eduTeacher);
        if (save){
            return R.ok();
        }else {
            return R.error();
        }
    }

3.DELETE(删除)

 /***
     * {id}/@PathVariable String id :通过路径传递参数值
     * 逻辑删除讲师的方法
     * @param id
     * @return
     */

        @DeleteMapping("{id}")
        @ApiOperation(value = "逻辑删除讲师")
        public R removeTeacher(@ApiParam(name ="id",value = "讲师ID",required = true) @PathVariable Integer id){
            boolean flag = teacherService.removeById(id);
            if(flag){
                 return R.ok();
            }else {
                return R.error();
            }

        }

4.PUT(修改)

 /***
     * 根据id修改讲师信息
     * @param id
     * @param eduTeacher
     * @return
     */
    @ApiOperation(value = "根据ID修改讲师")
    @PutMapping("{id}")
    public R updateByID(
            @ApiParam(name = "id",value = "讲师ID",required = true)
            @PathVariable Integer id,
            @ApiParam(name = "teacher",value = "讲师对象",required = true)
            @RequestBody EduTeacher eduTeacher){
            eduTeacher.setId(id);
            teacherService.updateById(eduTeacher);
            return R.ok();
    }

总结

本片文章是本人在学习过程中做讲师管理系统中遇见的使用Restful风格开发的CRUD接口的书写,希望大家可以参观参观,了解下Restful风格的相关操作与应用!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Restful风格 的相关文章

  • 使用选项卡式活动中的捆绑包将值从活动传递到片段

    我是一个java文盲 但仍在尝试开发一个供我个人使用的应用程序 我从 android studio 的 Tabbed Activity 开始 除了 MainActivity 中的一个片段和一个包之外 大部分没有改变 这是我的代码 主要活动
  • JAVA - 带有特殊字符的 LDAP 密码不起作用

    我试图在我的系统上创建一个登录屏幕 在 Active Directory 中进行查询 但是当用户的密码包含一些特殊字符 如 和 时 它不会验证 我需要加密密码才能工作吗 我该怎么做 我使用 getPassword 通过 JPasswordF
  • 从 OMElement 对象获取 InputStream/io.Reader

    我有一个OMElement对象 从中我想得到一个InputStream或读者对象 我想要的是流式传输xml来自OMElement我有 没有加载到内存中 我只能得到XMLStreamReader对此表示反对 但我找不到办法得到InputStr
  • Java Swing:清除JList而不触发监听器

    我的情况如下 我有一个 JList 只要在列表中进行选择 它就会触发搜索 使用 ListSelectionListener 我正在尝试使用以下命令重置列表上的选择list clearSelection 这样做的问题是使用clearSelec
  • Spring webflow 应用程序:HTTP 302 暂时移动

    我的 java 应用程序中的每个请求都会生成另外 2 个带有 HTTP 302 错误的请求 例如 如果请求查看名为板 html 这个请求是从首页 html 我收到按以下顺序生成的 3 个请求 POST home html 302 Moved
  • 使用多个构造函数创建不可变类

    我正在阅读这一页 https docs oracle com javase tutorial essential concurrency imstrat html关于在 Java 中创建不可变类 并决定根据页面上概述的规范修改我正在编写的类
  • 有效地查找正则表达式的所有重叠匹配项

    这是后续与 java 正则表达式匹配的所有重叠子字符串 https stackoverflow com q 11303309 244526 有没有办法让这段代码更快 public static void allMatches String
  • JUnit Eclipse 显示 System.out.print() 的

    我正在使用 JUnit 3 和 Eclipse 3 4 当我运行 JUnit 测试用例时 一切正常并且测试完美完成 唯一的事情是我想查看我正在运行的类的输出 所有类都具有一些输出值的基本 System out print 因此 当我运行测试
  • 如何解决错误:java.lang.ClassNotFoundException:io.netty.util.concurrent.GenericFutureListener?

    昨天我第一次尝试用 Java 制作 Prometheus 客户端 从 Python 开始 最后是 GoLang 是否找到示例 import io prometheus client Counter import io prometheus
  • 如何在 OpenAPI 3.0 中定义字节数组

    我正在将 API 从 Swagger 2 0 迁移到 OpenAPI 3 0 在 DTO 中 我有一个指定为字节数组的字段 Swagger 对 DTO 的定义 Job type object properties body type str
  • Java:检查给定日期是否在当前月份内

    我需要检查给定的日期是否在当前月份 我编写了以下代码 但 IDE 提醒我getMonth https docs oracle com javase 7 docs api java util Date html getMonth and ge
  • Maven 多模块项目结构问题

    自从过去几周构建我的 Maven 多模块项目以来 这是我的一次有趣的经历 当我决定使用 Maven 进行构建生命周期管理时 我有几个原因希望选择 Maven A 大多数开发团队都是分开的 这样每个团队都可以在项目中的单独模块上工作 例如团队
  • 我们可以在三元运算符(Java)中使用命令吗?

    这是一个工作代码 String a first String b second String object System out println object null a b 但它不是 String a first String b se
  • 独占锁定ConcurrentHashMap

    我知道不可能锁定 ConcurrentHashMap 进行独占访问 但是 我找不到原因 是因为构成CHM的 Segment 没有被api公开吗 据推测 如果是的话 客户端代码可以执行 交接 锁定 Cheers 我知道不可能锁定 Concur
  • getClassLoader().getResource() 返回 null

    我有这个测试应用程序 import java applet import java awt import java net URL public class Test extends Applet public void init URL
  • 如何使用 Java 原生接口从 Java 调用 Go 函数?

    可以通过以下方式调用 C 方法JNA https en wikipedia org wiki Java Native AccessJava 中的接口 如何使用 Go 实现相同的功能 package main import fmt impor
  • 在 Mac 上使用 JRE 打开 jar 文件

    我有一个 jar 文件 旨在通过命令行运行 我不打算在运行应用程序的机器上进行任何java开发 我的思考过程是 因此我应该只需要JRE而不是JDK 此外 JDK 大约是 JRE 的 4 倍 我不想下载它 在 Mac 上安装 JRE 时 它不
  • .class 与 .java

    class 文件和 java 文件有什么区别 我正在尝试让我的小程序工作 但目前我只能在 Eclipse 中运行它 还不能嵌入 HTML 谢谢 编辑 那么如何使用 JVM 进行编译呢 class 文件是编译后的 java 文件 java 都
  • Java中的DRY原则[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我一直在读关于DRY https en wikipedia org wiki Don 27t repeat yourself原则 虽然看起来
  • 当容器大小更改时,JTable 仅调整选定列的大小

    对于面板内的 JTable 如果面板变大 我如何将额外的空间仅分配给某些列 在我的例子中 分配给最后一列 尽管提供 第 3 4 列和8 将获得额外的空间 我想允许用户手动更改所有列的列大小 我尝试了 table setAutoResizeM

随机推荐

  • 在express项目里配置ejs模板引擎

    方法1 修改app js view engine setup app set views path join dirname views app set view engine ejs 在views中创建ejs模板文件 方法2 修改app
  • 老年人晕倒的几种原因

    晕倒是一种突发性 短暂性 一过性的意识丧失而昏倒 突然性的晕倒 跟大脑的神经有分不开关系 癫痫 脑供血不足 心脑血管疾病都是引起头晕倒的原因 大脑血液上不来 脑血液突然停止 就会产生放电波头晕的症状 患者会在一时间出现晕倒 很容易引起脑震荡
  • 在conda虚拟环境中的PyQt配置以及相关Pycharm设置

    文章目录 在conda虚拟环境中的PyQt配置 背景环境介绍 PyQt依赖包及PyQt tools的下载 Pycharm进行PyQt的相关配置 结语 在conda虚拟环境中的PyQt配置 作者 下龙湾 背景环境介绍 anaconda安装文件
  • Netty4简单认知

    Channel简介 在Netty中 Channel相当于一个Socket的抽象 它为用户提供了关于Socket状态 是连接还是断开 及对Socket的读 写等操作 每当Netty建立了一个连接 都创建一个与其对应的Channel实例 Cha
  • 各种排序算法的讲解与实现

    排序的分类 1 内部排序 内部排序 在整个排序过程中不需不访问外存便能完成 称这样的排序问题为内部排序 1 1 插入排序 插入排序 将无序序列中的一个或几个记录 插入 到有序的序列中 从而增加记录的有序序列的长度 主要思想是将第一个元素看做
  • 3D重建模的初步了解

    相关学习资料如下 cousera课程 https www coursera org learn robotics perception youtube课程 https www youtube com watch v RDkwklFGMfo
  • 什么是HTTPS

    首先 在参考 Tomcat内核设计剖析 大型网站技术架构 的基础上加了一些个人理解 如有错误或者不全面的地方 还请大家指出 在知道什么是HTTPS之前 我们首先要知道一下什么是HTTP HTTP是超文本传输协议的简称 工作在应用层 传输层基
  • linux上好玩的东西

    Figlet 想知道tmux安装与配置评论加点赞 想要我这个效果吗 安装figlet mac安装 brew install figlet brew 没有的可以看我之前的文章 ma配置 linux ubuntu deepin sudo apt
  • 最易上手的测试用例设计方法

    NO 1 lt lt 测试用例设计方法 gt gt 以下是八种常见的测试用例设计方法 包括等价类 边界值 判定表 因果图 正交实验 状态迁移图 场景法和错误推测 详述如下 等价类划分法 Equivalence Partitioning 策略
  • C++新特性16_写时拷贝(解决浅拷贝在某一个类对象中的资源进行修改,所有引用该资源的对象全部会被修改的问题;解决办法:在所有改变值的地方,重新分配内存,改变的是拷贝的值,而不影响原有对象中共享资源)

    C 新特性16 写时拷贝 1 问题 如果共享资源中的值发生了变化 那么其他使用该共享资源的值如何保持不变 2 解决思路 使用引用计数时 当发生共享资源值改变的时候 需要对其资源进行重新的拷贝 这样改变的是拷贝的值 而不影响原有的对象中的共享
  • 母版页禁用Enter提交表单

    在母版页里面由于使用了form 常常需要禁用enter提交表单 因为内容页或者母版页自身有如果有type submit 的button 当textbox聚焦时 按下enter都会触发表单的默认提交 不论是IE还是firefox 于是需要在o
  • python json串合并

    获取cookie def get login cookies self str1 str2 str3 str4 str5 str6 try 必须要有的cookie字段 var items bizuin data bizuin data ti
  • 1*1卷积核的作用及其应用举例

    1 降维和升维 通过使用 1x1 卷积核 可以改变输入张量的通道数 当输入张量的通道数较大时 使用 1x1 卷积核进行卷积操作可以将通道数减小 从而降低模型的计算复杂度 相反 如果需要增加通道数 也可以使用 1x1 卷积核进行升维操作 im
  • 标签href几种使用

    a标签的最重要功能是实现超链接和锚点 a标签里href属性是我们经常用的 其实它的值有很多种 可能我们往往会忽略 今天分享一下a标签的属性值及用法 1 href 这是一个比较常用的方法 是标签内置的一个方法 用于网页返回顶部较多 比如在底部
  • 深度学习------tensorflow2.0,keras实现CNN(mnist、cifar2、cifar10:ResNet-34、ResNet-18)

    1 ResNet 34卷积神经网络 cifar10 随着网络的加深 出现了训练集准确率下降 错误率上升的现象 就是所谓的 退化 问题 按理说更深的模型不应当比它浅的模型产生更高的错误率 这不是由于过拟合产生的 而是由于模型复杂时 SGD的优
  • qt day 5

    实现局域网的网络聊天室功能 1 gt 服务器代码 widget h ifndef WIDGET H define WIDGET H include
  • IDEA安装教程(多图预警)

    简介 关于IDEA的介绍 引用自百度百科 IDEA全称 IntelliJ IDEA 是java编程语言开发的集成环境 IntelliJ在业界被公认为最好的java开发工具 尤其在智能代码助手 代码自动提示 重构 J2EE支持 各类版本工具
  • 集简云简化流程模板,轻松实现工作流程自动化

    集简云平台内置大量自动化流程模板 用户可以在 模板中心 搜索应用名称 选择适合自己的场景 直接使用 本期分享集简云自动化工作流程 模板推荐 模板1 小鹅通新增订单后同步到seatable并更新微伴助手用户信息 集成应用 小鹅通 SeaTab
  • [终端配色方案]

    配色方案 一 Iterm2 设置Color Preferences gt Profiles gt Colors Brighten bold text去掉 选择solarized 选择xterm 256color 二 Iterm2 Shell
  • Restful风格

    文章目录 前言 一 Restful风格是什么 二 Restful风格里面的请求方式 1 Get 2 POST 3 PUT 4 DELETE 这四个在项目接口中分别代表的是查 增 改 删 三 Restful风格的Controller如何实现