如何通过 POSTMAN 或 DHC REST 应用程序在 REST GET API 调用中传递 @RequestParam 中的字符串数组?
How to pass String array in @RequestParam in REST GET API call through POSTMAN or DHC REST application?
我在 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 调用,它将传递那个字段名称[]。
有人知道怎么做吗?
首先,你现在的方法不行,因为你的@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
这两个结果都应该打印出所需的结果。
我在 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 调用,它将传递那个字段名称[]。
有人知道怎么做吗?
首先,你现在的方法不行,因为你的@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
这两个结果都应该打印出所需的结果。