如何在Spring REST中的一个参数中传递键值

时间:2019-06-17 14:25:21

标签: java spring

我想使用以下命令在Spring REST参数中传递键值对:

curl http://localhost:11004/room/page?pageNum=1\&pageSize=1\&params={"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);

我应该如何调整请求或服务器端代码以使其成为可能?

1 个答案:

答案 0 :(得分:1)

这里pageNum=1\&pageSize=1\&params={"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客户端和其他工程师都不会理解它,至少他们“只是知道”