繁体   English   中英

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

[英]How to request origin and body of a request in Spring controller

我正在使用 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;
}

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

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

回答您的问题:

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

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

    }

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

您应该能够从 HttpServletRequest 对象中获取标头和 uri

public XXX createMyObject(@RequestBody String data, HttpServletRequest request)

至于响应,我会说返回字符串,它是一个视图名称,您可以向它传递一些属性,说明操作成功与否,或 ModelAndView。

@Autowired 私有 HttpServletRequest servletRequest;

您可以声明请求对象,然后在方法中访问以获取 Uri

试试这个:

@RequestMapping(value = "/create", method = RequestMethod.POST)
public XXX createMyObject(HttpServletRequest request, @RequestBody String body) {
    String origin = URI.create(request.getRequestURL().toString()).getHost();
    System.out.println("Body: " + body + " Origin:" + origin);
    return XXX;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM