java spring MVC之RESTful快速开发

news2024/11/26 1:34:07

我这里有个一springboot项目
在这里插入图片描述
我在启动类同目录下创建了一个目录 目录名叫 controller
里面有一个UserController
diam结构是这样的

package com.example.threshold.controller;

import com.example.threshold.user;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

//声明Controller控制器
@Controller
public class UserController {

    // 设置一个 GET接口  子路径get  接受一个id参数  id要跟在路径后面
    @RequestMapping(value = "/user/{id}",method = RequestMethod.GET)
    @ResponseBody
    public String getId(@PathVariable Integer id) {
        return "您要获取的用户id为"+id;
    }

    //设置一个 POST请求  子路径叫  add 接受一个name参数   需要传递的方式是一个 表单传参或者路径问号后传参方式带的参数
    @RequestMapping(value = "/user", method = RequestMethod.POST)
    @ResponseBody
    public String addUser(@RequestParam String name) {
        return "你要添加的用户名称为"+name;
    }

    //设置一个 PUT请求 子路径叫  edit   接受一个user类对象参数  要求json传参
    @RequestMapping(value = "/user", method = RequestMethod.PUT)
    @ResponseBody
    public user editUser(@RequestBody user user) {
        //把接到的json传回去
        return user;
    }

    // 设置一个DELETE请求  子路径为delete   接受一个参数id 和 一个type参数  接受方式为  表单或者 路径问号后携带参数
    @RequestMapping(value = "/user", method = RequestMethod.DELETE)
    @ResponseBody
    public String deleteUser(@RequestParam Integer id,Integer type) {
        return "你要删除的用户id为"+id+"操作类型为"+type;
    }
}

这是一个基础的REST风格风格开发 但其实 我们可以很大程度的简化

这里 我先启动项目
在这里插入图片描述
然后用Postman测试 这些都是可以正常访问 和 调用返回的
在这里插入图片描述
确认无误之后 我们开一个一个解决一下他们的简化快捷开发

首先 来做第一个简化 大家会发现 他们路径都是user 那么 简化最需要简的就是 重复部分 我们先改成这样

package com.example.threshold.controller;

import com.example.threshold.user;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

//声明Controller控制器
@Controller
@RequestMapping("/user")
public class UserController {

    // 设置一个 GET接口  子路径get  接受一个id参数  id要跟在路径后面
    @RequestMapping(value = "/{id}",method = RequestMethod.GET)
    @ResponseBody
    public String getId(@PathVariable Integer id) {
        return "您要获取的用户id为"+id;
    }

    //设置一个 POST请求  子路径叫  add 接受一个name参数   需要传递的方式是一个 表单传参或者路径问号后传参方式带的参数
    @RequestMapping( method = RequestMethod.POST)
    @ResponseBody
    public String addUser(@RequestParam String name) {
        return "你要添加的用户名称为"+name;
    }

    //设置一个 PUT请求 子路径叫  edit   接受一个user类对象参数  要求json传参
    @RequestMapping(method = RequestMethod.PUT)
    @ResponseBody
    public user editUser(@RequestBody user user) {
        //把接到的json传回去
        return user;
    }

    // 设置一个DELETE请求  子路径为delete   接受一个参数id 和 一个type参数  接受方式为  表单或者 路径问号后携带参数
    @RequestMapping(method = RequestMethod.DELETE)
    @ResponseBody
    public String deleteUser(@RequestParam Integer id,Integer type) {
        return "你要删除的用户id为"+id+"操作类型为"+type;
    }
}

我们再次尝试访问 会确认一切正常
在这里插入图片描述
这里 触发 get 因为后面的id是路径参数 需要保留 其他 如果你想直接用user这个名字 就不需要加这个RequestMapping的value来声明路径了
如果你想叫 user/add 就可以 直接放

@RequestMapping(value = "/add",method = RequestMethod.POST)

然后 你会发现 全部都用了 ResponseBody
那么是不是重复 那我们干掉
写在类上面 每个方法就不需要单独加了 这个就表示 这个类下所有的方法都使用ResponseBody
在这里插入图片描述

然后是头上的

@Controller
@ResponseBody

其实很多类都会用 那么 我们就可以这样
将这两个注解干掉直接换成

@RestController

在这里插入图片描述
我们点进去看一下
在这里插入图片描述
都在这里面了

然后 我们发现 每一个方法都有一个 RequestMethod.请求方式 这个也可以写简单一点
我们直接改成这样

package com.example.threshold.controller;

import com.example.threshold.user;
import org.springframework.web.bind.annotation.*;

//声明Controller控制器
@RestController
@RequestMapping("/user")
public class UserController {

    // 设置一个 GET接口  子路径get  接受一个id参数  id要跟在路径后面
    @GetMapping("/{id}")
    public String getId(@PathVariable Integer id) {
        return "您要获取的用户id为"+id;
    }

    //设置一个 POST请求  子路径叫  add 接受一个name参数   需要传递的方式是一个 表单传参或者路径问号后传参方式带的参数
    @PostMapping
    public String addUser(@RequestParam String name) {
        return "你要添加的用户名称为"+name;
    }

    //设置一个 PUT请求 子路径叫  edit   接受一个user类对象参数  要求json传参
    @PutMapping
    public user editUser(@RequestBody user user) {
        //把接到的json传回去
        return user;
    }

    // 设置一个DELETE请求  子路径为delete   接受一个参数id 和 一个type参数  接受方式为  表单或者 路径问号后携带参数
    @DeleteMapping
    public String deleteUser(@RequestParam Integer id,Integer type) {
        return "你要删除的用户id为"+id+"操作类型为"+type;
    }
}

DeleteMapping声明delete 请求
PutMapping声明put 请求
PostMapping声明post 请求
GetMapping声明get 请求
如果 有路径 或者路径参数这几 在后面接 (“/后面的内容”)
就好了

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

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

相关文章

平衡二叉树理论详解

文章目录 基本概念平衡二叉树插入结点LL(左单旋)RR(右单旋)LR(左右旋)RL(右左旋) 示例插入推导过程 基本概念 平衡二叉树是一棵空树或它的左右两个子树的高度差的绝对值不超过1&…

Maven ( 二 ) 项目应用

4.资源管理 4.0.pom.xml Maven的pom.xml是一个项目对象模型(Project Object Model)&#xff0c;它是Maven项目的构建文件。它描述了一个项目的基本信息&#xff0c;包括项目依赖、插件、仓库等信息。 下面是一个简单的pom.xml示例&#xff1a; <project xmlns"http…

深度学习用于医学预后-第二课第三周4-7节-关于事件的时间数据,认识处理删失数据

在本课中&#xff0c;我们将讨论生存数据。为了能够对生存进行建模&#xff0c;我们需要能够以我们可以处理的形式表示数据。 主要的挑战是删失数据&#xff0c;这是一种特殊形式的缺失数据。我们接下来将要研究这一点。 在这节课中&#xff0c;我们将谈论生存数据和删失。 …

LeetCode 96 不同的二叉搜索树

题目&#xff1a; 给你一个整数 n &#xff0c;求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种&#xff1f;返回满足题意的二叉搜索树的种数。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;5 示例 2&#xff1a; 输入&#xff1a;n 1 …

第七章:C语言的操作符

说起操作符大家都不陌生&#xff0c;从我们最初的 - c * / 加减乘除&#xff0c;到更加深奥的操作符&#xff0c;而今天我要有完整的系统来理清楚C语言的操作符到底有什么&#xff0c;和它们相关的用法&#xff0c;话不多说&#xff0c;直接走进今天的主题----C语言的操…

保护个人隐私和数据安全的方法与策略

引言 随着信息技术的普及和发展&#xff0c;我们享受到了便捷的互联网服务&#xff0c;但与此同时&#xff0c;个人隐私和数据安全问题也日益受到威胁。在这个所谓的"裸奔"时代&#xff0c;网络攻击、数据泄露和隐私侵犯已经成为常态。然而&#xff0c;我们并不无助…

sysfs文件系统

sysfs系统介绍 sysfs系统sysfs系统是什么&#xff1f;koject的内核对象模型基础kobject结构体定义kest bus如何管理driver和devicebus_type 结构体 小知识什么是挂载mount命令 &#x1f4cc;————本章重点————&#x1f4cc; &#x1f517;了解sysfs系统概念; &#x1f5…

布谷鸟hash算法的并行化实现(一)

由于本人最近在写一个项目&#xff0c;为了实现数据查找以及数据修改部分的快速操作&#xff0c;所以采用hash对数据进行存储&#xff0c;而在此过程中接触到了布谷鸟hash&#xff0c;觉得这个hash算法还是很有意思并且高效&#xff0c;所以想着进行一些记录&#xff0c;本系列…

一文带你快速掌握如何读懂 YonBuilder移动开发 的项目源码

本文将通过四大步的简单讲述&#xff0c;让新手开发者朋友们快速掌握阅读YonBuilder移动开发项目源码的技巧方法。 1.读懂代码的第一步&#xff0c;了解项目的整体文件结构 CSS: 存放css样式的文件&#xff1b; feature&#xff1a;猜测是用来存放特征文件的&#xff0c;实际…

了解投影坐标系统,并在精美的地图上探索

投影坐标系简介 地球椭球体表面也是个曲面&#xff0c;而我们日常生活中的地图及量测空间通常是二维平面&#xff0c;因此在地图制图和线性量测时首先要考虑把曲面转化成平面。由于球面上任何一点的位置是用地理坐标&#xff08;λ&#xff0c;φ&#xff09;表示的&#xff0…

计算机三级网络技术总结(更新中)

&#x1f37f;*★,*:.☆(&#xffe3;▽&#xffe3;)/$:*.★* &#x1f37f; &#x1f35f;欢迎来到前端初见的博文&#xff0c;本文主要讲解我计算机三级网络技术&#x1f35f; &#x1f468;‍&#x1f527; 个人主页 : 前端初见 &#x1f95e;喜欢的朋友可以关注一下&#…

BEV专栏(二)从BEVFormer看BEV流程(下篇)

前言 书接上回&#xff0c;在上一篇文章中&#xff0c;我们介绍了BEVFormer这一先进的BEV算法。在本篇文章中&#xff0c;我们将深入探讨BEVFormer的实现细节&#xff0c;旨在帮助读者更深入地理解BEVFormer的工作原理和性能表现。 本教程禁止转载。同时&#xff0c;本教程来自…

【maven】自定义构建maven的jar包依赖

前言 自己定义自己的maven的jar包依赖&#xff0c;本地版本。 实现 pom.xml pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSche…

车载软件架构——闲聊几句AUTOSAR BSW(五)

我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 我们并不必要为了和谐,而时刻保持通情达理;我们需要具备的是,偶尔有肚量欣然承认在某些方面我们可能会有些不可理喻。该有主见的时候能掷地有声地镇得住场…

车载基础软件——基础软件验证平台(网络管理和诊断)

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 我们并不必要为了和谐&#xff0c;而时刻保持通情达理&#xff1b;我们需要具备的是&#xff0c;偶尔有肚量欣然承…

部署packstack及问题总结

目录 一、部署packstack 1.1 简介 1.2 性能搭配 1.3 准备工作 1.4 安装 二、出现的问题 2.1 安装中断临时文件 2.2 提示某个安装包出错 2.3 leatherman版本太高 三、安装成功 一、部署packstack 1.1 简介 对于openstack初学者而言&#xff0c;传统部署openstack流程…

MQ-rabbitMQ_基础篇

MQ-rabbitMQ_基础篇 1.MQ1.1什么是MQ1,2应用 2.常见消息中间件协议&#xff08;模型&#xff09;2.1JMS模型&#xff08;协议&#xff09;2.2AMQP协议 3.RabbitMQ3.1六种工作模式3.1.1Hello Word简单模式3.1.2word queues 工作队列能者多劳 3.1.3Publish/Subscribe 发布与订阅模…

在SwissTargetsPrediction数据库中预测成分靶点

1.对筛选的多肽成分进行靶点预测&#xff1a; ①用Uniport中的蛋白进行一系列操作&#xff08;水解&#xff0c;挑选2~8短肽&#xff0c;活性预测&#xff0c;毒性&#xff0c;过敏性预测&#xff0c;胃肠吸收度&#xff0c;半衰期和苦味的预测、生物活性功能预测&#xff09;…

mybatis连接池源码分析

文章目录 前言一、PooledDataSourceFactory二、获取连接三、归还连接 前言 其实大部分连接池的代码都大同小异&#xff0c;总体获取连接&#xff0c;归还连接逻辑大都相同。希望通过阅读本文章&#xff0c;能给你带来帮助。 测试用例 public void testMybatis()throws Excepti…

深入篇【C++】类与对象:运算符重载详解

深入篇【C】类与对象&#xff1a;运算符重载详解 ⏰一.运算符重载&#x1f553;1.<运算符重载&#x1f550;2.>运算符重载&#x1f552;3.运算符重载&#x1f551;4.运算符重载①.格式1.改进12.改进2 ②.默认成员函数1.功能2.不足 &#x1f553;5.<运算符重载&#x1…