我试图传递路径参数和查询URL中的参数,但我得到一个奇怪的错误.下面是代码
String url = "http://test.com/Services/rest/{id}/Identifier"
Map<String, String> params = new HashMap<String, String>();
params.put("id", "1234");
UriComponentsBuilder builder = UriComponentsBuilder.fromUriString(url)
.queryParam("name", "myName");
String uriBuilder = builder.build().encode().toUriString();
restTemplate.exchange(uriBuilder , HttpMethod.PUT, requestEntity,
class_p, params);
Run Code Online (Sandbox Code Playgroud)
我的网址正在变成 http://test.com/Services/rest/%7Bid%7D/Identifier?name=myName
我该怎么做才能让它发挥作用.我期待http://test.com/Services/rest/{id}/Identifier?name=myNameparams将id添加到url
请建议.提前致谢
java query-parameters url-parameters resttemplate path-parameter
我正在尝试对请求正文进行 DELETE,但我不断收到 400(错误请求)错误。当我在 swagger/postman 中执行此操作时,它成功删除了记录。但从 Java 代码来看我无法做到这一点
外部 API 的设计方式需要 body 和 URL。它无法改变。请让我知道如何删除带有请求正文的条目
public Person delete(Person person, String url, Map<String, String> uriVariables) throws JsonProcessingException {
RestTemplate restTemplate = new RestTemplate();
CustomObjectMapper mapper = new CustomObjectMapper();
HttpEntity<Person> requestEntity = new HttpEntity<Person>(person);
try {
ResponseEntity<Person> responseEntity = restTemplate.exchange(url, HttpMethod.DELETE, requestEntity, Person.class, uriVariables);
return responseEntity.getBody();
} catch (RestClientException e) {
System.out.println(mapper.writeValueAsString(person));
throw e;
}
}
Run Code Online (Sandbox Code Playgroud)
当出现异常时,我将获得 JSON 格式的 JSON 请求,并且在 Swagger/postman 中同样可以正常工作
我做了一些谷歌搜索,发现restTemplate在存在请求正文时存在删除问题。这篇文章没有帮助https://jira.spring.io/browse/SPR-12361有什么办法让它工作