[英]How to specify order validation in Request body Spring Boot Rest Controller
[英]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 方法中作为响应返回的正确对象通常是什么。
回答您的问题:
如果您在方法参数中包含HttpServletRequest
,您将能够从那里获取源信息。 例如。
public XXX createMyObject(@Requestbody String data, HttpServletRequest request) { String origin = request.getHeader(HttpHeaders.ORIGIN); //rest of code...
}
对于休息响应,您需要返回对象 (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.