无法使用REST API Controller在服务器端检索url参数

时间:2015-09-03 11:16:55

标签: java spring spring-mvc spring-boot

我想从我的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();

请提供您的反馈。感谢。

1 个答案:

答案 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并执行您的逻辑。