是否可以指示Spring从正文或URL中获取参数?

时间:2017-09-22 19:09:45

标签: spring-mvc

Spring MVC方法的参数可以声明为RequestBody或RequestParam。有没有办法说,"从身体(如果提供)或URL参数获取此值,如果不是"?也就是说,让用户可以灵活地以任何方式传递它,这对他们来说很方便。

2 个答案:

答案 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
λ