如何在 Spring 控制器中请求请求的来源和正文

Aya*_*ane 4 java rest spring

我正在使用 Java 和 Spring 构建一个 REST API,我需要在我的控制器中处理一个 POST 请求,但我需要从该请求中提取主体,它是一个 JSON,也是该请求的“来源”,

@RequestMapping(value = "/create", method = RequestMethod.POST)
public XXX createMyObject(@RequestBody String data, YYY){
   MyObject mo = new MyObject();
   mo.setData = data;
   mo.setOrigin = yyy;

   myRepository.save(mo);
   return XXX;
}
Run Code Online (Sandbox Code Playgroud)

我有几个问题:首先是如何获得该请求的来源(我猜这是一个在标头中传播的网址?),是否有与 @RequestBody 类似的注释?。

我的第二个问题是在这些 post 方法中作为响应返回的正确对象通常是什么。

cra*_*wor 14

回答您的问题:

  1. 如果您HttpServletRequest在方法参数中包含,您将能够从那里获取来源信息。例如。

    public XXX createMyObject(@Requestbody String data, HttpServletRequest request) {
            String origin = request.getHeader(HttpHeaders.ORIGIN);
            //rest of code...
    
    Run Code Online (Sandbox Code Playgroud)

    }

  2. 对于休息响应,您需要返回对象 (json) 或 HttpStatus 的表示,以通知客户端调用是否成功。例如 Return ResponseEntity<>(HttpStatus.ok);

  • 您甚至可以使用“HttpHeaders.ORIGIN”常量。 (2认同)