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

如何将参数传递给Spring Boot REST控制器?

陈知
2023-03-14

我试图将一个参数传递给我的@RESTController-Spring Boot类。

在@POSTMapping方法中,我想使用自定义Java类的方法来处理接收到的正文并返回响应。

Spring应用程序在应用程序中启动。Java语言控制器对象似乎是隐式创建的。

我已经尝试将构造函数添加到我的RESTController类中。但是我找不到用参数调用该构造函数的方法。

// Application.java
public static void main (String[] args) {
    SpringApplication.run(Application.class, args);
}
//ConnectorService.java
@RestController
public class ConnectorService {

    private Solveable solver;

    public ConnectorService() {}

    public ConnectorService (Solveable solveable) {
        this.solver = solveable;
    }

    @CrossOrigin(origins = "http://localhost:3000")
    @PostMapping(path =  "/maze")
    public Solution Test(@RequestBody Test test) {
       return solver.solve(test);
    }

}

尽管我可以定义第二个构造函数,但我没有找到任何方法用我的对象调用它。

共有3个答案

史弘博
2023-03-14

@RestController遵循与Spring框架中任何其他@Component相同的依赖注入规则。如果您有一个构造函数,Spring将在实例化控制器时尝试“注入”参数。

您需要将依赖项注册为Spring bean。

似乎您对Spring还不熟悉,并且您正从Spring Boot和rest控制器等高级主题开始。请抽出一些时间阅读基本知识。

魏澄邈
2023-03-14

您可以使用@Request estParam注释传递参数,如下所示:

@CrossOrigin(origins = "http://localhost:3000")
@PostMapping(path =  "/maze")
public Solution Test(@RequestParam("paramName") String param, @RequestBody Test test) {
   return solver.solve(test);
}

您可以将其与http请求放在一起:

http://localhost:3000/maze?paramName=someValue

假设您有POST请求,可能有不同的方法来构建此请求,具体取决于您使用的API测试工具。

楚奇逸
2023-03-14

使用@Request estParam注释传递参数

 类似资料:
  • 问题内容: 我有多个调用同一控制器的路由,我想将不同的变量传递给它。 我知道我可以使用“解决”对象: 传递值作为依赖项: 这种方法的问题是,如果其他路线上缺少resolve对象,则我的应用程序崩溃,并且我想传递可选的参数。 有什么方法可以(从路由提供者)将特定的参数传递给Controller? 谢谢 问题答案: 路由: 访问:在控制器中注入$ route,然后使用它

  • 问题内容: 我有一个登录屏幕,我想将登录ID从LoginController传递到MainController,因此我可以访问一些功能来更改密码和其他功能。 我这样加载控制器: Main.fxml绑定到MainController.java。有没有一种方法可以传递所需的用户ID,并在控制器的initialize()方法上对其进行访问? 问题答案: 用FXMLLoader加载控制器后,可以在调用sh

  • 问题内容: 我正在A中使用RUN指令安装rpm 但是,我想将值“ 2.3”作为参数传递。我的RUN指令应类似于: 哪里 问题答案: 您正在寻找和指导。这些是Docker 1.9中的新功能。查看https://docs.docker.com/engine/reference/builder/#arg。这将允许您添加到,然后使用构建。

  • 问题内容: 我想将登录用户单击的sa 列表中的传递给twitter bootstrap 。我正在与 angularjs* 一起使用 grails ,其中数据是通过 angularjs 呈现的。 *** 组态 我的grails视图页面是 我的是 所以,我怎么能传递到? 问题答案: 我尝试如下。 我在 鼓励 按钮上打电话给angularjs控制器, 我设置的从angularjs控制器。 我提供了一个p

  • 问题内容: 这似乎是一个愚蠢的问题,但是我是这个话题的新手。我正在致力于关于节点js的承诺。我想将参数传递给Promise函数。但是我不知道。 而功能类似于 问题答案: 将Promise包裹在一个函数中,否则它将立即开始工作。另外,您可以将参数传递给函数: 然后,使用它: ES6: 用:

  • 问题内容: 我有以下任意JSON对象(字段名称可能会更改)。 -- 我知道我可以像定义具有相同字段名的JSON对象那样定义类,但是我希望控制器接受具有不同字段名的任意JSON对象。 问题答案: 如果您想将自定义JSON对象传递给MVC操作,则可以使用此解决方案,它的工作原理很吸引人。 该解决方案的真正好处是,您不需要为每个参数组合定义一个新类,并且除此之外,您可以轻松地将对象转换为其原始类型。 更