HttpClientErrorException с пружинными микросервисами в Java - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь создать 2 микросервиса.1-й вызов 2-й (метод add должен только проверять содержание проверки и устанавливать флаг утвержденных) для утверждения, но я все еще получаю исключение org.springframework.web.client.HttpClientErrorException: 405 null.

Вот вам мой REST от 1-го микросервиса

  @RequestMapping(value = "/addreview", method = RequestMethod.PUT, produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<?> createReviewForMovie(@RequestBody Review review) {

        ResponseEntity<Boolean> response = new RestTemplate().getForEntity("http://localhost:9100/add", 
                Boolean.class, review);

        Boolean resultReview = response.getBody();

        return new ResponseEntity<Boolean>(resultReview, HttpStatus.OK);
    }

И второй:

@RequestMapping(value = "/add", method = RequestMethod.PUT, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> add(@RequestBody Review review){
    if(review.getReviewContent().length()<10){
        review.setApproved(false);
        return new ResponseEntity<Boolean>(review.isApproved(), HttpStatus.OK);
    }
    review.setApproved(true);
    return new ResponseEntity<Boolean>(review.isApproved(), HttpStatus.OK);
}

Что я делаю не так?Как позвонить во 2-й микросервис из 1-го?

1 Ответ

0 голосов
/ 25 мая 2018

Проблема в том, что я использую один и тот же класс модели (Review.class) с разными микросервисами, и это не позволяет мне выполнить запрос.

Метод добавления не может распознать review, потому что я передаю его из другого проекта.

После моего перекодирования это выглядит так:

@RequestMapping(value = "/addreview", method = RequestMethod.PUT, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> createReviewForMovie(@RequestBody Review review) {
    Map<String, String> uriVariables = new HashMap<String, String>();
    uriVariables.put("reviewContent", review.getReviewContent());
    uriVariables.put("userName", review.getUserName());

    ResponseEntity<Boolean> response = new RestTemplate().getForEntity("http://localhost:9100/add/{reviewContent}/{userName}", 
            Boolean.class, uriVariables);

    Boolean resultReview = response.getBody();

    return new ResponseEntity<Boolean>(resultReview, HttpStatus.OK);
}

@RequestMapping(value = "/add/{reviewContent}/{userName}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> add(@PathVariable("reviewContent") String reviewContent, @PathVariable("userName") String userName){
    if(reviewContent.length()<10){
        return new ResponseEntity<Boolean>(false, HttpStatus.OK);
    }else if(userName.length()>15){
        return new ResponseEntity<Boolean>(false, HttpStatus.OK);
    }
    return new ResponseEntity<Boolean>(true, HttpStatus.OK);
}

Однако мне все еще интересно, есть ли другой способ использовать Review.class.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...