Здравствуйте, я пытаюсь создать метод POST и все время получаю ошибку «404 Request method 'GET' not supported». Ниже я размещу свой контроллер Rest, а ниже - свой класс обслуживания. Единственное, что не работает, это метод @PostMapping.
@RequestMapping("/ATM")
public class ATMController {
private ATMService atmService;
@Autowired
public ATMController(ATMService atmService) {
this.atmService = atmService;
}
@GetMapping(path = "/{id}")
public ATM getATMById(@PathVariable long id){
return atmService.getByID(id);
}
@PostMapping(path = "/{id}/withdraw/{amount}")
public List<Bill> withdrawMoney(@PathVariable long id,@PathVariable float amount){
return atmService.withdrawMoney(id,amount);
}
}
@Service
public class ATMService {
private ATMRepository atmRepository;
private BillRepository billRepository;
@Autowired
public ATMService(ATMRepository atmRepository, BillRepository billRepository) {
this.atmRepository = atmRepository;
this.billRepository = billRepository;
}
public void save(ATM atm) {
atmRepository.save(atm);
}
public ATM getByID(Long id) {
return atmRepository.findById(id).get();
}
public List<Bill> getBillList(Long id) {
return atmRepository.findById(id).get().getBillList();
}
@Transactional
public List<Bill> withdrawMoney(Long id, float amount) {
List<Bill> allBills = getBillList(id);
List<Bill> billsToWithdraw = new ArrayList<>();
float amountTransferred = 0;
for (Bill bill : allBills) {
if (bill.getValue() == 100) {
billsToWithdraw.add(bill);
amountTransferred += bill.getValue();
}
if (amountTransferred == amount) {
for (Bill billToWithdraw : billsToWithdraw) {
billRepository.delete(billToWithdraw);
}
return billsToWithdraw;
}
}
return null;
}
}
Я не вижу проблемы, я попытался переключиться на @GetMapping и удалил фактическую транзакцию billRepository.delete (billToWithdraw ); " а затем метод возвращает правильные счета.