Я пытаюсь с тем же кодом. Я не получаю эту ошибку.
Версия для весенней загрузки: 1.5.0.RELEASE
Вместо POST я попытался использовать GET API с тем же шаблоном URL.
/
в конце пути не имеет значения.
@Component
public class CoreServiceClient {
private RestTemplate restTemplate;
private static final Logger LOGGER = LoggerFactory.getLogger(CoreServiceClient.class);
private static final String root = "http://localhost:8080/test/api/";
public CoreServiceClient(RestTemplateBuilder restTemplateBuilder) {
restTemplate = restTemplateBuilder.rootUri(root).build();
}
public void updateState(String id) {
try {
ResponseEntity<String> response =
restTemplate.exchange("/food/{id}/state", HttpMethod.GET, null, String.class, id);
LOGGER.info("Resp: {}", response.getStatusCode());
LOGGER.info("Resp: {}", response.getBody());
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
}
}
}
Я добавил фиктивный контроллер с тем же путем:
@RestController
@RequestMapping("/test/api")
public class FooController {
@GetMapping("/food/{id}/state")
public ResponseEntity<String> fooState(@PathVariable String id) {
return new ResponseEntity<String>("EATING", HttpStatus.OK);
}
}
Для проверки я добавил еще один контроллер:
@RestController
@RequestMapping("/client")
public class CoreServiceClientController {
@Autowired
private CoreServiceClient client;
@GetMapping
public ResponseEntity<String> goGet() {
client.updateState("1001");
return new ResponseEntity<>("HELLO", HttpStatus.OK);
}
}
У меня все отлично работает.
Вход:
2019-01-15 23:23:19.870 INFO 22570 --- [nio-8080-exec-1] com.example.demo001.CoreServiceClient : Resp: 200
2019-01-15 23:23:19.871 INFO 22570 --- [nio-8080-exec-1] com.example.demo001.CoreServiceClient : Resp: EATING