当前位置: 首页 > 知识库问答 >
问题:

如何在Spring Boot Rest中处理数量未知的RequestParams?

杨鸿畅
2023-03-14

我在Spring Boot中有一个REST api:

@GetMapping("/test")
public MyClass getData() { 

    return something;
}

最多可使用10个RequestParams请求此endpoint。当然,我知道所有10个可能的RequestParam,但是客户机可以选择使用0到所有10个RequestParams之间的任何地方进行请求。

public class ParamClass {
    private @RequestParam("ParamOne") String ParamOne;
    private @RequestParam("ParamTwo") Set<String> ParamTwo;
    private @RequestParam("ParamThree") Integer ParamThree;
}
@GetMapping("/test")
public MyClass getData(@RequestParam ParamClass params) { 

    return something;
}

请注意:参数可以是不同的类型(String、int、Set等)。因此,下面的解决方案非常接近,但没有解决它,因为映射需要一致的值类型:如何使用@requestparam使用spring MVC捕获多个参数?

共有1个答案

阮梓
2023-03-14

一种方法是接收带有参数的映射,问题是所有参数都具有相同的类型,您必须在代码中强制转换为正确的类型:

@ResponseBody
public String updateFoos(@RequestParam Map<String,Object> allParams) {
    return "Parameters are " + allParams.entrySet();
}
 类似资料:
  • 我是Camunda的新手,没有找到任何教程或参考来解释如何实现以下目标: 当开始一个过程时,我希望用户在发票中添加任意数量的项目。在下一个用户任务中,所有这些项目及其数量都应该打印给批准数据的人。 我还不知道如何在一个过程和它的变量之间建立1:n的关系。我需要为每个项目启动子流程吗?或者我必须使用自定义Java对象吗?如果是这样,我如何从任务列表中将表单元素映射到这样的对象?

  • 例如,RabbitMQ有一种设置队列限制的方法。如果达到这一限制,来自出版商的新消息将被拒绝,从而从消费者向生产者施加某种背压。(因为队列中的消息意味着不由使用者处理)。 有没有一种方法可以确保像Kinesis这样的代理的这种行为,在这种行为中,允许消费者拉取消息,而不是像RabbitMQ那样的代理推给他们。 在动觉方面,与Kafka类似,消费者的状态、消费抵消等都保存在另一个实体中,动觉的Dyn

  • 我正在将一个项目从java迁移到kotlin,该项目使用了许多可能为空的变量,并且在与用户或外部作业进行一些交互之前不会初始化它们。 我试图使用kotlin null安全优势,并且我试图避免在源代码中使用<code>nulllateinitvar location:location?=空 我这样做是为了避免使用< code >?每次我需要使用这些变量时。现在的问题是...如果变量没有初始化会发生什

  • 本文向大家介绍如何在Java中处理ArithmeticException(未选中)?,包括了如何在Java中处理ArithmeticException(未选中)?的使用技巧和注意事项,需要的朋友参考一下 该java.lang.ArithmeticException是一个未经检查的异常在Java中。通常,会遇到java.lang.ArithmeticException:/零,这是在尝试将两个数字相除

  • <---JS StackTrace---> =====JS栈迹=================================================================== 安全上下文:0x10178C2CFB51 2:main[/run-N6KBYU8CQZCNEXKH0TBM/solution.JS:~30][PC=0x2859725AEC0](this=0x10178

  • 我主要是为技术精明的人编写一个小工具,例如程序员、工程师等,因为这些工具通常是快速的,随着时间的推移,我知道会有未处理的异常,用户不会介意。我希望用户能够向我发送回溯,这样我就可以检查发生了什么,并可能改进应用程序。 我通常做wxPython编程,但我最近做了一些Java。我已经将