我想使用以下命令在Spring REST参数中传递键值对:
curl http://localhost:11004/room/page?pageNum=1\&pageSize=1\¶ms={"key":"value"} -H "token:1"|jq '.'
但是服务器端通过字符串接收了params参数,如下所示:
params="key:value"
如何使服务器端获取键值对?这是服务器端模型代码:
public class PageQuery<T> {
private Integer pageNum;
private Integer pageSize;
private T params;
}
这是服务器端功能:
public Response<PageBean<Room>> queryRoomByPage(PageQuery<Map<String,String>> request);
我应该如何调整请求或服务器端代码以使其成为可能?
答案 0 :(得分:1)
这里pageNum=1\&pageSize=1\¶ms={"key":"value"}
的每个部分都被&
分割,然后引向您的params="key:value"
,因为在这里Map<String,String>
您对Spring说,键和值应该有字符串< / p>
更改方法输入的示例:
@RequestParam("pageNum") Integer pageNum, @RequestParam("pageSize") Integer pageSize, @RequestParam("params") Map<String, String>
请勿使用像json这样复杂的HTTP查询参数,请为此使用http正文,并等待您具有由Java类表示的特定描述的特定输入JSON
更好:如果您的输入可以表示为特定的业务对象,尤其是在Map上,请不要使用String
。 HTTP客户端和其他工程师都不会理解它,至少他们“只是知道”