Mam usługę odpoczynku, która wysyła błąd 404, gdy zasoby nie zostaną znalezione. Tutaj źródłem mojego kontrolera i wyjątek który wysłać HTTP 404.Spring MVC - Wyjątek uruchamiania RestTemplate, gdy wystąpi http 404
@Controller
@RequestMapping("/site")
public class SiteController
{
@Autowired
private IStoreManager storeManager;
@RequestMapping(value = "/stores/{pkStore}", method = RequestMethod.GET, produces = "application/json")
@ResponseBody
public StoreDto getStoreByPk(@PathVariable long pkStore) {
Store s = storeManager.getStore(pkStore);
if (null == s) {
throw new ResourceNotFoundException("no store with pkStore : " + pkStore);
}
return StoreDto.entityToDto(s);
}
}
@ResponseStatus(value = HttpStatus.NOT_FOUND)
public class ResourceNotFoundException extends RuntimeException
{
private static final long serialVersionUID = -6252766749487342137L;
public ResourceNotFoundException(String message) {
super(message);
}
}
Kiedy próbuję to nazwać z RestTemplate z tym kodem:
ResponseEntity<StoreDto> r = restTemplate.getForEntity(url, StoreDto.class, m);
System.out.println(r.getStatusCode());
System.out.println(r.getBody());
otrzymuję ten wyjątek:
org.springframework.web.client.RestTemplate handleResponseError
ATTENTION: GET request for "http://........./stores/99" resulted in 404 (Introuvable); invoking error handler
org.springframework.web.client.HttpClientErrorException: 404 Introuvable
Myślałem, że mogę zbadać mój obiekt responseEntity i zrobić kilka rzeczy za pomocą statusu. Ale wyjątek to uruchomienie, a moja aplikacja znika.
Czy istnieje specjalna konfiguracja dla restTemplate, aby nie wysyłać wyjątku, ale wypełnić moją ResponseEntity.
Bardzo dziękuję za pomoc.
-
Loïc
są w stanie uzyskać dostęp do usługi odpoczynek przez przeglądarkę? czy to też rzuca 404? – Akshay
Czy kiedykolwiek znalazłeś odpowiedź na to pytanie? – leojh