返回顶部
首页 > 资讯 > 精选 >怎么让Spring Rest接口中路径参数可选
  • 940
分享到

怎么让Spring Rest接口中路径参数可选

2023-06-25 11:06:27 940人浏览 独家记忆
摘要

小编给大家分享一下怎么让spring Rest 接口中路径参数可选,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Spring Rest接口路径参数可选我有一个 Spring Rest 服务,其中有一个路径参数是可选的(实际

小编给大家分享一下怎么让spring Rest 接口中路径参数可选,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

Spring Rest接口路径参数可选

我有一个 Spring Rest 服务,其中有一个路径参数是可选的(实际情况是我原来将参数放到路径中,而另外一个前端通过 body 传给我)。按照传统的方式是把这个服务在代码里面分成两个方法,一个带路径参数,一个不带,但是这样看起来不优雅,让人疑惑。

我试着给 @PathVariable 注解加上 require=false 注解,但是不起作用,返回404错误。

下面的形式就是传统方式:

@RequestMapping(value = "/path/{id}")public String getResource(@PathVariable String id) {  return service.processResource(id);} @RequestMapping(value = "/path")public String getResource() {  return service.processResource();}

但是我真的不喜欢这种方式,臃肿。

从 Spring 4 and Java 8 开始(其实和 Java 8 关系不大),在一个方法里面实现可选路径参数变得很简单,如下所示,就是同时定义两个路由:

@RequestMapping(value = {"/path", "/path/{id}")public String getResource(@PathVariable Optional<String> id) {  if (id.isPresent()) {    return service.processResource(id.get());  } else {    return service.processResource();  }}

确实,在一个方法里面统一业务要优雅得多。

RestFul风格传参

RestFul风格就是所有参数都由/传递,而不是传统的?xx&xx形式

例如:写一个Controller:

package controller;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.WEB.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;@Controllerpublic class RestfulController {@RequestMapping("/add")public String test(int a,int b, Model model){int res = a+b;model.addAttribute("msg","结果为"+res);return "test";}}

可以看到出现a,b没找到的错误

怎么让Spring Rest接口中路径参数可选

按照传统方式传递参数:?a=1&b=2

怎么让Spring Rest接口中路径参数可选

那么按照Restful风格传递参数就应该:在方法参数值前加@PathVariable注解,并在url上直接绑定参数,可以同时设置Request的方法类型(GET、POST、DELETE、OPTIONS、HEAD、PATCH、PUT、TRACE)

@PathVariable:让方法参数的值对应绑定到一个url模板变量上

package controller;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;@Controllerpublic class RestfulController {@RequestMapping(value = "/add/{a}/{b}",method = RequestMethod.GET)public String test(@PathVariable int a,@PathVariable int b, Model model){int res = a+b;model.addAttribute("msg","结果为"+res);return "test";}}

再次开启Tomcat,并设定a=1,b=3:

/add/1/3传递参数

怎么让Spring Rest接口中路径参数可选

这就是restful风格传参

也可以通过变相的组合注解实现:

  • @PostMapping

  • @GetMapping

  • @PutMapping

  • @DeleteMapping

  • @PatchMapping

看完了这篇文章,相信你对“怎么让Spring Rest 接口中路径参数可选”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: 怎么让Spring Rest接口中路径参数可选

本文链接: https://lsjlt.com/news/304418.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么让Spring Rest接口中路径参数可选
    小编给大家分享一下怎么让Spring Rest 接口中路径参数可选,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Spring Rest接口路径参数可选我有一个 Spring Rest 服务,其中有一个路径参数是可选的(实际...
    99+
    2023-06-25
  • 如何让Spring Rest 接口中路径参数可选
    目录Spring Rest接口路径参数可选RestFul风格传参Spring Rest接口路径参数可选 我有一个 Spring Rest 服务,其中有一个路径参数是可选的(实际情况是...
    99+
    2024-04-02
  • 怎么实现 Spring Boot 接口参数加密解密
    本篇内容主要讲解“怎么实现 Spring Boot 接口参数加密解密”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么实现 Spring Boot 接口参数加密解密”吧!加密解密本身并不是难事,...
    99+
    2023-06-17
  • Spring rest接口中的LocalDateTime日期类型转时间戳怎么实现
    这篇“Spring rest接口中的LocalDateTime日期类型转时间戳怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我...
    99+
    2023-07-05
  • C#中命名参数和可选参数怎么应用
    这篇“C#中命名参数和可选参数怎么应用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#中命名参数和可选参数怎么应用”文章吧...
    99+
    2023-06-30
  • Go中的路径实时监测,接口怎么实现?
    在Go语言中,有时候我们需要实时监测某个目录下的文件变化,以便于及时地做出相应的处理。例如,我们需要监测某个文件夹下的文件,当有新的文件添加进去或者文件被删除时,我们需要能够及时地收到通知。那么,在Go语言中,我们该如何实现这样的功能呢?...
    99+
    2023-09-01
    接口 实时 path
  • python中fastapi怎么设置查询参数可选或必选
    本篇内容主要讲解“python中fastapi怎么设置查询参数可选或必选”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python中fastapi怎么设置查询参数可选或必选”吧!前言:在fast...
    99+
    2023-06-30
  • Go中实现实时路径的接口,你知道怎么做吗?
    Go是一种快速,简单和可靠的编程语言,它被广泛应用于Web开发、游戏开发、系统编程等领域。在这篇文章中,我们将探讨如何在Go中实现实时路径的接口。 实时路径是指在任何时候都能够获取到最新的路径信息,这在很多应用场景中都是非常重要的,比如导航...
    99+
    2023-09-01
    接口 实时 path
  • CentOS7中怎么配置网络接口和网络参数
    要配置网络接口和网络参数,可以按照以下步骤进行操作: 打开终端,输入以下命令来编辑网络配置文件: sudo vi /etc/sy...
    99+
    2024-03-04
    CentOS7
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作