如何使用get在Spring的REST模板上传递对象

时间:2018-08-31 21:08:38

标签: spring-boot resttemplate

我正在使用Spring REST模板通过POST提取数据,并且一切正常。

ResponseEntity<MyObject> resp= restTemplate.postForEntity("url", inputParam, MyObject.class);

但是现在由于我没有执行任何POST操作,因此我想将其更改为GET。我可以通过将所有输入参数添加为url参数来做到这一点,并做到:

ResponseEntity<MyObject> resp= restTemplate.getForEntity("url",MyObject.class);

但是问题是inputParam有很多参数,因此手动准备url并不是最佳解决方案。另外GET个请求也有长度限制。

还有其他更好的解决方案吗?

1 个答案:

答案 0 :(得分:1)

首先,我认为您的第二行应该说getForEntity()

第二,如果您四处搜索,则有很多URL构建器类选项(包括Spring的选项)。因此,我将使用URL构建类来准备URL,而不是自己动手做,这会造成混乱。

长度限制

这里有一个很好的SO条目,指出了普通浏览器的长度限制;因此,如果它通过浏览器,那么如果您可能超过他们建议的2000下限,我会坚持使用POST。

从技术上讲,https://www.w3.org/2001/tag/doc/get7#myths不应有限制。

我认为在许多后端技术上没有限制。因此,如果这仅是API且不通过浏览器(例如后端到后端),则您可以忽略这些限制。我建议您仔细研究一下,然后在后端进行测试。

UniRest

此外,作为个人建议,我发现UniRest是一个非常有用的REST客户端,它使我的大部分代码更加简洁:)。如果有时间,可以尝试一下。

http://unirest.io/java.html