Spring Boot 使用@PathVariable、@RequestParam等注解绑定参数到控制器的几种常用方法

Spring Boot 使用@PathVariable、@RequestParam等注解绑定参数到控制器的几种常用方法

1、@PathVariable

获取路径参数,RUL格式:url/{id},示例:http://localhost:9100/admin/privilege/find/3

Java代码示例:

@GetMapping("/find/{id}")
@ApiOperation(value = "查询权限", notes = " ")
@ApiImplicitParams(
     @ApiImplicitParam(paramType = "path", name = "id", value = "权限ID", required = true)
)
public Object findPrivilege(@PathVariable(name = "id") int id) {
     Map<String,Object> map = new HashMap<>();
     map.put("privilege", privilegeService.findPrivilege(id));
     return ApiResponse.success(map);
}

2、@RequestParam

获取查询参数,RUL格式:url?name=张三丰,示例:http://localhost:9100/admin/role/search?name=张三丰

Java代码示例:

@PostMapping("/search")
@ApiOperation(value = "搜索权限", notes = " 支持分页,并提供按权限名称、权限URI、权限码查询功能")
@ApiImplicitParams({
   @ApiImplicitParam(paramType = "query", name = "searchKey", value = "查询关键词,支持:权限名称/权限URI/权限码三类关键词"),
   @ApiImplicitParam(paramType = "query", name = "pageNum", value = "分页页码")
})
public Object searchPrivilege(@RequestParam(name = "searchKey", defaultValue = "") String searchKey, @RequestParam(name = "pageNum", defaultValue = "1") int pageNum) {
    Map<String,Object> map = new HashMap<>();
    map.put("privileges", privilegeService.searchPrivilege(searchKey, pageNum, Tools.pageSize));
    return ApiResponse.success(map);
}

3、@RequestBody

获取请求体中的参数,RUL格式:不限,示例:如下图的postman接口测试工具

www.zeeklog.com  - Spring Boot 使用@PathVariable、@RequestParam等注解绑定参数到控制器的几种常用方法

Java代码示例:

@PutMapping("/update/{id}")
    @ApiOperation(value = "更新权限", notes = " ")
    public Object updatePrivilege(@RequestBody Privilege privilege) {
        // 检查权限ID
        if (0>=privilege.getId()) {
            return ApiResponse.error(10010, "参数错误");
        }

        // 处理默认值
        if (0==privilege.getSort()) {
            privilege.setSort(null);
        }
        if (0==privilege.getCreateTime()) {
            privilege.setCreateTime(null);
        }
        if (0==privilege.getUpdateTime()) {
            privilege.setUpdateTime(Tools.getSystemTimeStamp());
        }

        int res = privilegeService.editPrivilege(privilege);
        if (res>0) {
            Map<String,Object> map = new HashMap<>();
            map.put("result", res);
            return ApiResponse.success(map);
        } else {
            return ApiResponse.error();
        }
    }

或者使用Map<String,String>作为参数来接收:

@PutMapping("/update/{id}")
    @ApiOperation(value = "更新权限", notes = " ")
    public Object updatePrivilege(@RequestBody Map<String, String> privilege) {
        // todo
        // ...
    }

4、@RequestHeader

获取请求头中的参数,URL格式:不限,示例:如下图的postman接口测试工具

www.zeeklog.com  - Spring Boot 使用@PathVariable、@RequestParam等注解绑定参数到控制器的几种常用方法

Java代码示例:

@GetMapping("/refresh_access_token")
    @ApiOperation(value = "刷新接口全局调用凭据", notes = " ")
    @ApiImplicitParams(
            @ApiImplicitParam(paramType = "header", name = "access_token", value = "接口全局调用凭据", required = true)
    )
    public Object refreshAccessToken(@RequestHeader(name = "access_token") String access_token) {

        Map<String, Object> map = new HashMap();
        map.put("access_token", access_token);
        return ApiResponse.success(map);
    }

5、@CookieValue

Java代码示例:

@GetMapping("/admin/privilege/get_list")
public void demo3(@CookieValue(name = "myCookie") String myCookie) {
    System.out.println("myCookie=" + myCookie);
}

// 或者这种方式
@GetMapping("/admin/privilege/get_list2")
public void demo3(HttpServletRequest request) {
    for (Cookie cookie : request.getCookies()) {
        if ("myCookie".equals(cookie.getName())) {
            System.out.println(cookie.getValue());
        }
    }
}

6、无注解参数绑定

www.zeeklog.com  - Spring Boot 使用@PathVariable、@RequestParam等注解绑定参数到控制器的几种常用方法

Java代码示例:

@PostMapping(path = "/admin/privilege/save")
public void demo2(Privilege privilege) {
    System.out.println(privilege.toString());
}

Read more

Java后端开发神器:飞算JavaAI让我从菜鸟变高手

Java后端开发神器:飞算JavaAI让我从菜鸟变高手

目录 前言 一、飞算JavaAI的核心理念 二、核心功能深度剖析 2.1 智能分析读懂你的"老项目" 2.2 自定义AI规则 2.3 引导式开发与模块化生成 三、用飞算JavaAI实战演练 3.1 飞算JavaAI的安装和登录 3.2 分析现有项目 3.3 测试为项目增加新功能 四、其他亮点功能一览 五、谁会使用飞算JavaAI?它将如何改变开发生态? 全文总结  🎬 攻城狮7号:个人主页 🔥 个人专栏:《AI前沿技术要闻》 ⛺️ 君子慎独!  🌈 大家好,欢迎来访我的博客! ⛳️ 此篇文章主要介绍 AI编程工具飞算JavaAI 📚 本期文章收录在《AI前沿技术要闻》,大家有兴趣可以自行查看! ⛺️ 欢迎各位 ✔️ 点赞 👍 收藏

By Ne0inhk
C++起始之路——string

C++起始之路——string

👇作者其它专栏 《数据结构与算法》《算法》《C++起始之路》 目录 1.为什么学习string类 2.标准库中的string类 3.string类的模拟实现 4.扩展 1.为什么学习string类 1.1C语言中的字符串 C语言中,字符串是以'\0'结尾的一些字符的集合,为方便操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且底层空间需要用户自己管理,容易出现越界访问。 2.标准库中的string类 2.1string类 string类的文档介绍 使用string类时,必须包含#include<string>头文件与using namespace std;  2.2auto与范围for auto关键字 ●在早期C/C++中auto的含义是:

By Ne0inhk
C++ 多态:面向对象的动态行为核心机制

C++ 多态:面向对象的动态行为核心机制

C++ 多态:面向对象的动态行为核心机制 💡 学习目标:掌握多态的概念与分类,理解虚函数的作用原理,能够熟练使用多态实现程序的动态行为扩展。 💡 学习重点:静态多态与动态多态的区别、虚函数的定义与使用、纯虚函数与抽象类、多态的实战应用场景。 一、多态的概念与分类 ✅ 结论:多态是 C++ 面向对象三大特性之一,指同一行为在不同对象上表现出不同的形态,核心是“一个接口,多种实现”。 多态主要分为两大类,二者的实现原理和触发时机截然不同: 1. 静态多态:编译阶段确定调用关系,也叫编译时多态,实现方式包括函数重载和运算符重载 2. 动态多态:运行阶段确定调用关系,也叫运行时多态,实现方式是虚函数 + 基类指针/引用 生活中的多态示例:同样是“动物叫”这个行为,猫的叫声是“喵喵喵”,狗的叫声是“汪汪汪”,不同动物对象表现出不同的行为形态。 二、静态多态:编译时确定的多态性 💡 静态多态的调用关系在编译阶段就已确定,编译器会根据参数列表的差异匹配对应的函数。

By Ne0inhk
飞算JavaAI:精准切中开发者痛点,专治“AI生成代码不可用、逻辑混乱”的顽疾

飞算JavaAI:精准切中开发者痛点,专治“AI生成代码不可用、逻辑混乱”的顽疾

飞算JavaAI:精准切中开发者痛点,专治“AI生成代码不可用、逻辑混乱”的顽疾 * 一、前言 * 二、关于飞算JavaAI * 2.1 飞算JavaAI来源 * 2.2 飞算JavaAI超能力 * 三、飞算JavaAI我的另一半 * 3.1 Idea安装配置 * 3.2 Main方法写个九九乘法表 * 3.3 Main方法写个冒泡排序 * 3.4 老项目翻新,重新设计 * 3.4.1 老项目困境:某电商系统的 “成长烦恼” * 3.4.2 合并项目:让代码 “秩序井然” * 3.4.3 智能分析:精准定位问题,高效优化代码 * 3.

By Ne0inhk