我正在尝试通过请求正文向URL发出GET请求。在网上搜索之后,我发现在请求正文中包含GET请求是违反惯例的。但是我仍然想知道自Postman允许功能以来是否有办法。我正在尝试通常使用其RestTemplate类在Spring中实现此功能。我有以下内容:
public List<CustomObj> findLeads(List<String> usernames)
{
log.info("getLeads:+ usernames={}", usernames);
final HttpEntity<List<String>> httpEntityWithHeaders = createHttpEntityWithHeaders(usernames);
final String uri = serviceHost + RESTFulURIConstants.LEADS_PATH_VIA_USERNAME;
log.info("Calling uri from getLeads method, uri={}", uri);
final ResponseEntity<List<CustomObj>> responseEntity = restTemplate.exchange(uri,
HttpMethod.GET,
httpEntityWithHeaders,
TYPE_REFERENCE_LEAD_RESPONSE);
log.info("getLeads:-");
return responseEntity.getBody();
}
private HttpEntity<List<String>> createHttpEntityWithHeaders(final List<String> usernames)
{
final HttpHeaders headers = new HttpHeaders();
headers.set(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE);
headers.set(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE);
return new HttpEntity<>(usernames, headers);
}
private static final ParameterizedTypeReference<List<CustomObj>>
TYPE_REFERENCE_LEAD_RESPONSE = new ParameterizedTypeReference<List<CustomObj>>()
{
};
但是我继续遇到错误:"Required request body is missing: public java.util.List<CustomObj>
。我可以使用Postman成功地调用它,并且Postman甚至具有此功能,它可以生成所需语言的代码(article)我尝试了该方法,Unirest和OKHttp不允许我将请求正文作为请求的一部分
有什么建议吗?
此外,将GET用于通常不在查询参数中的大型查询的行业标准是什么?
答案 0 :(得分:0)
如果这是常规的获取请求,请在URL中发送参数。
如果需要您的请求正文中的数据,我建议您将此请求作为PATCH请求。如果数据对请求不是很重要,但是您希望允许客户端发送一些数据,那么这样做就没有问题。