Spring MVC方法的参数可以声明为RequestBody或RequestParam。有没有办法说,"从身体(如果提供)或URL参数获取此值,如果不是"?也就是说,让用户可以灵活地以任何方式传递它,这对他们来说很方便。
答案 0 :(得分:1)
您可以在代码中生成两个变量并将它们都检查为null 像这样:
@RequestMapping(value = GET_SOMETHING, params = {"page"}, method = RequestMethod.GET)
public
@ResponseBody
JSONObject getPromoByBusinessId(
@PathVariable("businessId") String businessId, @RequestParam("page") int page,
@RequestParam("valid") Boolean valid,
@RequestParam("q") String promoName) throws Exception {}
然后使用if if的一系列来响应请求。 我写它是为了使用三个参数中的任何一个为null或空,对所有不同的场景作出反应。
要使它们可选,请参阅: Spring Web MVC: Use same request mapping for request parameter and path variable
答案 1 :(得分:1)
HttpServletRequest接口应该有助于解决这个问题
@RequestMapping(value="/getInfo",method=RequestMethod.POST)
@ResponseBody
public String getInfo(HttpServletRequest request) {
String name=request.getParameter("name");
return name;
}
现在,根据来自正文或参数的请求数据,将获取该值
C:\Users\sushil
λ curl http://localhost:8080/getInfo?name=sushil-testing-parameter
sushil-testing-parameter
C:\Users\sushil
λ curl -d "name=sushil-testing-requestbody" http://localhost:8080/getInfo
sushil-testing-requestbody
C:\Users\sushil
λ