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

Stable Diffusion v2-1-base:解锁AI绘画新境界的终极武器

想要将脑海中的创意瞬间转化为惊艳的视觉作品吗?Stable Diffusion v2-1-base正是你梦寐以求的AI绘画神器!这款基于扩散模型的文本到图像生成工具,经过22万次精心微调,在保持原有性能的同时,为你带来更加震撼的生成效果。 【免费下载链接】stable-diffusion-2-1-base 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/stable-diffusion-2-1-base 🎨 揭秘AI绘画的魔法工厂 想象一下,Stable Diffusion v2-1-base就像一座高效的创意工厂,每个车间都有独特的职责: 文本理解车间 - 负责将你的文字描述翻译成机器能懂的"艺术语言",使用强大的OpenCLIP-ViT/H文本编码器,确保每个细节都被精准捕捉。 创意加工车间 - UNet骨干网络是这里的主角,它通过交叉注意力机制接收文本编码信息,就像一位经验丰富的艺术家,将抽象概念转化为具体的视觉元素。 画布渲染车间 - 变分自编码器(VAE)在这里大显身手,它在潜在空间中进行图像编码和解码,确

By Ne0inhk

MacOS用户必看:3步解决Whisper-WebUI崩溃问题

MacOS用户必看:3步解决Whisper-WebUI崩溃问题 【免费下载链接】Whisper-WebUI 项目地址: https://gitcode.com/gh_mirrors/wh/Whisper-WebUI 作为一名MacOS用户,当你满怀期待地安装Whisper-WebUI这款强大的语音转文字工具时,却可能遭遇程序崩溃的困扰。这不仅仅是技术问题,更是用户体验的挑战。今天我们就来深入分析这个在Apple Silicon芯片上常见的兼容性问题,并提供切实可行的解决方案。 问题现象:从期待到失望的瞬间 想象一下这样的场景:你按照教程完成了Whisper-WebUI的安装,输入启动命令后,终端显示程序正在运行。突然,屏幕上出现"Segmentation fault"错误提示,Python进程意外终止。更令人沮丧的是,当你尝试重新启动时,系统提示有信号量对象泄漏,整个体验就像是在玩一个技术版的"打地鼠"游戏。 典型崩溃表现: * 启动后立即显示EXC_BAD_ACCESS错误 * 模型下载过程中Python进程突然退出 * 终端不断输出资源泄漏警告信息 * 程序运

By Ne0inhk

llama.cpp量化模型部署实战:从模型转换到API服务

1. 为什么你需要关注llama.cpp:让大模型在普通电脑上跑起来 如果你对AI大模型感兴趣,肯定听说过动辄需要几十GB显存的“庞然大物”。想在自己的电脑上跑一个7B参数的模型,以前可能得配一张昂贵的专业显卡。但现在,情况不一样了。我今天要跟你聊的 llama.cpp,就是那个能让大模型“瘦身”并飞入寻常百姓家的神奇工具。 简单来说,llama.cpp是一个用C/C++编写的开源项目,它的核心目标只有一个:用最高效的方式,在消费级硬件(比如你的笔记本电脑CPU)上运行大型语言模型。它不像PyTorch那样是个庞大的深度学习框架,它更像一个“推理引擎”,专注于把训练好的模型,以最小的资源消耗跑起来。 我刚开始接触大模型部署时,也被各种复杂的依赖和巨大的资源需求劝退过。直到用了llama.cpp,我才发现,原来在我的MacBook Pro上,也能流畅地和Llama 2这样的模型对话。这背后的功臣,主要就是两点:纯C/C++实现带来的极致性能,以及模型量化技术带来的体积与速度革命。量化这个词听起来有点技术,你可以把它想象成给模型“压缩图片”

By Ne0inhk

Cogito-v1-preview-llama-3B开源可部署:MIT许可商用无忧+模型权重完全开放

Cogito-v1-preview-llama-3B开源可部署:MIT许可商用无忧+模型权重完全开放 1. 模型简介:重新定义小规模模型的智能边界 Cogito v1 preview llama-3B是Deep Cogito推出的混合推理模型系列中的明星产品。这个仅有30亿参数的模型,在大多数标准基准测试中都超越了同等规模下的最优开源模型,包括来自LLaMA、DeepSeek和Qwen等知名模型的同类表现。 Cogito LLMs是经过精细指令调优的生成式模型,采用文本输入/文本输出的经典架构。最令人振奋的是,所有模型都以完全开放的MIT许可证发布,这意味着企业和开发者可以毫无顾虑地将其用于商业项目,无需担心版权问题。 这个模型的独特之处在于它的双重推理模式:既可以直接回答问题(标准LLM模式),也可以在回答前进行自我反思(推理模式)。这种混合设计让它在处理复杂问题时表现出色,特别是在需要多步推理的场景中。 核心优势一览: * 开源商用:MIT许可证,商业使用零门槛 * 混合推理:支持直接回答和反思推理双模式 * 多语言支持:在30多种语言上训练,国际化能力强 *

By Ne0inhk