【问题标题】:unable to retrieve url parameters on Server side using REST API Controller无法使用 REST API 控制器在服务器端检索 url 参数
【发布时间】:2015-11-29 04:49:07
【问题描述】:

我想从我的 REST API 控制器调用 REST API 控制器。

"http://localhost:8080/function/1?filter={"id":1435263}"

由于spring mvc无法读取“{”,我们无法直接发送({“id”:1435263})JSON查询字符串和url,我以map的形式发送查询字符串(搜索变量)。

Object response = restTemplate.getForObject(crudControllerURL,
            Object.class, map);

其中 map 包含值。

在服务器端,我无法检索此地图。我尝试了@RequestParam Object obj,但它不起作用。我不知道如何在那里获得这些值?

我需要把它转换成 POST 吗?

编辑

当我尝试将整个 url 与查询字符串一起使用时,我会收到

java.lang.IllegalArgumentException: Not enough variable values available to expand '"id"'

添加服务器端控制器代码 sn-p(不是全部),请注意我需要访问服务器 REST API 控制器中的地图。 服务器端控制器

    @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();

请提供您的反馈。谢谢。

【问题讨论】:

  • 您认为这对解决您的问题有何帮助?您发布客户端代码但省略了服务器端代码,这就是问题所在。还有为什么要把儿子作为论据而不是正文?
  • 什么异常来了?您是否配置了消息转换器??
  • 我马上就这样做了。
  • @bilbo baggins 不,我没有配置任何转换器
  • @M.Deinum ...这是搜索功能。用户应该能够使用查询字符串进行搜索,而我的设计要求它仅通过 url。

标签: java spring spring-mvc spring-boot


【解决方案1】:

你应该这样做而不是使请求复杂化:

网址可以这样更改: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 并执行您的逻辑。

【讨论】:

  • 但该过滤器包含搜索参数,并且可以是用户随机输入的任何内容。
  • 通常在典型的 Web 应用程序中,所有过滤器都将作为 URL 的一部分作为请求参数。除非您有要过滤的大数据,否则如果您只有 2-5 个过滤字段,则请求参数就足够了。但正如我也提到的,如果数据很大,请使用 POST 方法并使用 jackson 解组输入。
  • ..好吧,我认为这让我朝着正确的方向前进。谢谢
猜你喜欢
  • 2015-11-16
  • 1970-01-01
  • 2020-09-13
  • 2016-12-24
  • 1970-01-01
  • 1970-01-01
  • 2023-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多