【问题标题】:How to pass String array in @RequestParam in REST GET API call through POSTMAN or DHC REST application?如何通过 POSTMAN 或 DHC REST 应用程序在 REST GET API 调用中传递 @RequestParam 中的字符串数组?
【发布时间】:2016-01-22 01:38:34
【问题描述】:

我在 Java Spring 应用程序中有以下 REST 控制器:

@RequestMapping(
     value = "/api/getApplication/{me_userId}", 
     method = RequestMethod.GET, 
     produces = MediaType.APPLICATION_JSON_VALUE)
public Object getApplication(
        @PathVariable String userId,
        @RequestParam(value="fieldNames[]", required = false) String[] fieldNames) {

            if (fieldNames != null) {
                for (String fieldName : fieldNames)
                    System.out.println(fieldName);
            }

            ...
            return null;
}

所以我无法成功模拟来自 POSTMAN 的 DHC REST 的 API 调用,什么会通过该 fieldNames[]。

有人知道怎么做吗?

【问题讨论】:

  • 有一个错字:@PathVariable 字符串应该是-me_userId

标签: spring-boot postman http-request-parameters


【解决方案1】:

首先,您当前的方法不起作用,因为您的@PathVariable 错误。在您的@RequestMapping 中,您的路径中有以下占位符:{me_userId},这意味着它将映射到具有该名称的路径变量。

但是,您拥有的唯一 @PathVariable 是无名的,这意味着它将使用参数的名称 (userId)。

因此,在您尝试执行您的请求之前,您必须将您的 @RequestMapping 更改为:

@RequestMapping(
    value = "/api/getApplication/{userId}", // <-- it's now {userId}
    method = RequestMethod.GET, 
    produces = MediaType.APPLICATION_JSON_VALUE)

然后,如果您运行应用程序,您可以选择传递参数的方式。以下两种方法都可以:

?fieldNames[]=test,test2

或者:

?fieldNames[]=test&fieldNames[]=test2

这两个结果都应该打印出想要的结果。

【讨论】:

  • 是的,抱歉,打错字了,应该是@PathVariable String 中的me_userId
  • 而且,是的,非常感谢您的解决方案有效,所以我们基本上必须将带有变量的数组附加到 URL。没关系,它对我有用!
猜你喜欢
  • 1970-01-01
  • 2020-10-19
  • 2012-08-10
  • 1970-01-01
  • 2017-04-26
  • 2020-07-16
  • 1970-01-01
  • 2021-02-04
  • 1970-01-01
相关资源
最近更新 更多