我想从我的REST API控制器调用REST API Controller。
“http://localhost:8080/function/1?filter= {” ID “:1435263}”
由于我们无法直接发送({“id”:1435263})JSON查询字符串以及url,因为spring mvc无法读取“{”,我正在以map的形式发送查询字符串(搜索变量)。
Object response = restTemplate.getForObject(crudControllerURL,
Object.class, map);
其中map包含值。
在服务器端,我无法检索此地图。我尝试了@RequestParam对象obj,但它没有用。我无能为力如何在那里获得这些价值?
我是否需要将其转换为POST?
修改
当我尝试使用查询字符串的整个网址然后我收到
java.lang.IllegalArgumentException: Not enough variable values available to expand '"id"'
添加服务器端控制器代码段(不是整个),请注意我需要访问Server REST API Controller中的映射。 服务器端控制器
@RequestMapping(value = "/{function}/{type}", method = RequestMethod.GET)
public List<Order> performFetchAll(@PathVariable String function,
HttpServletRequest request) throws JsonParseException,
JsonMappingException, IOException, InvalidAttributesException {
String requestQueryString = request.getQueryString();
if (requestQueryString == null
|| requestQueryString.equalsIgnoreCase(""))
return orderService.findAll();
请提供您的反馈。感谢。
答案 0 :(得分:3)
您应该这样做,而不是使请求复杂化:
网址可以像这样更改: http://localhost:8080/function/1?idFilter=1435263
@RequestMapping(value = "/{function}/{type}", method = RequestMethod.GET)
public List<Order> performFetchAll(@PathVariable String function, @RequestParam("idFilter") String id, HttpServletRequest request) throws JsonParseException,
JsonMappingException, IOException, InvalidAttributesException {
//DO something
}
如果您的过滤器请求像json一样大而复杂,请将您的方法更改为POST并使用JSON并执行您的逻辑。