Добрый день, разработчики. В этом приложении я создаю небольшую проблему с процессом оценки, который я хочу реализовать. Будучи приложением, работающим на локальном хосте, идеально, но как только я разместил в Heroku, его журнал ошибок выдает мне эту ошибку на 500 Internal Error.
Я только что опубликовал это видео, чтобы вы могли увидеть любые случаи, которые я пытаюсь применить :
1-й случай (Передача объекта или целого числа для запроса параметра тела с приложением, работающим в локальном режиме, безупречная производительность) https://youtu.be/IdpHQg4FW7k
2-й случай (Передача целого числа в запрос Параметр body с приложением в heroku, ошибка 500) https://youtu.be/eJHSA_h8R3Y
3-й случай (Передача объекта на запрос параметра body с приложением в heroku, ошибка 500) https://youtu.be/_l-Z0I3hNZU
Угадайте, с этим видео я раскрываю более подробно, что происходит, несмотря на то, что я собираюсь оставить код ниже перед этим текущим редактированием. Спасибо за вашу поддержку
В основном с моего фронта В конце я просто отправляю через параметр тела запроса скорость (выбираемую пользователем среди 1-5 целых чисел):
COMPONENT in VUE
functionx(){
this.$store.dispatch("rateUpdater", {
ratePack: {
productRate: 4,
},
product_id: this.ProductCard.product_id,
});
}
VUEX Process
rateUpdater({ dispatch }, { product_id, ratePack }) {
fetch(url+"mini/all_products/user/product_rated/" + product_id, {
credentials: "include",
headers: {
"Content-Type": "application/json",
},
method: "POST",
body: JSON.stringify(ratePack),
})
.then((newData) => {
return newData.json();
})
.then((data) => {
if (data.Error) {
data.Error
} else {
data;
dispatch("fetchAllProducts");
}
})
.catch((error)=> {
alert("Request on Rate: ", error);
});
},
Таким образом, получая эти данные в моем бэкэнде, я просто сначала получаю Я инициализировал эту переменную в моем теле запроса как Integer, причина - это то, как она поступает из внешнего интерфейса, затем я в основном заменяю ее на Double, полагая, что это может сработать:
CONTROLLER
importations
package com.miniAmazon;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.Authentication;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.web.bind.annotation.*;
import java.util.*;
import java.util.stream.Collectors;
@RequestMapping(value="/mini/all_products/user/product_rated/{id}",method = RequestMethod.POST)
public ResponseEntity <Map<String,Object>>rateProductOnBuy(@PathVariable("id") Long id, Authentication authentication
,@RequestBody Integer productRated
){
SOME CODE.....
Product product=productRepository.getOne(id);
Double rate=new Double(productRated)----------->transforming integer of request body to double
---------------process of calculating average rate--------------------
Double deframingRate=product.getProductRate()*product.getPeopleRating()+rate;
Integer deframingPeopleVoting=product.getPeopleRating()+1;
Double finalAverage=deframingRate/deframingPeopleVoting;
-----------setting new Rate-------------
product.setProductRate(finalAverage);
---------setting new amount of voters-----------
product.setPeopleRating(deframingPeopleVoting);
---------saving repository----
productRepository.save(product);
return new ResponseEntity<>(makeMapResponse("Success","Product Rated"), HttpStatus.CREATED);
}
, но в основном это небольшое изменение не не работает ..... Есть идеи о том, как я могу справиться с этой проблемой? заранее спасибо