>source

2 개의 끝 점이 있습니다.

  • http : // localhost : 8080/account/v1/credit/{accountNumber} (POST->TransactionDTO)
  • http : // localhost : 8080/account/v1/debit/{accountNumber} (POST->TransactionDTO)

그리고 내 TransactionDTO :

public class TransactionDTO {
    @NotNull
    private Double amount;
    public TransactionDTO(@NotNull Double amount) {
        super();
        this.amount = amount;
    }
... Getters Setters
}

기본적으로 신용이 호출되면 dto 금액이 주어진 accountNumber와 관련된 계정의 잔액에 추가되므로 지금까지는 문제가 없습니다.

그러나 Debit이 호출되면 아래와 같이 BillPaymentTransaction, WithdrawTransaction과 같은 여러 가지 인출 트랜잭션 유형이 있습니다 (앱이 커질수록 더 많은 인출 트랜잭션 유형이 추가 될 수 있음).

내 문제는 컨트롤러와 관련하여 어떤 유형의 인출 트랜잭션이 왔는지 이해하고 특정 작업을 수행 할 수 있도록 요청 클래스 (TransactionDTO)를 어떻게 설계해야 하는가입니다.

내 컨트롤러의 방법 :

@PostMapping(path = "/credit/{accountNumber}")
public ResponseEntity<TransactionStatus> credit(@PathVariable String accountNumber, @RequestBody TransactionDTO depositTransaction) throws InsufficientBalanceException {
    TransactionStatus response = accountService.credit(accountNumber, depositTransaction);
    return new ResponseEntity<>(response,HttpStatus.OK);
}
@PostMapping(path = "/debit/{accountNumber}")
public ResponseEntity<TransactionStatus> debit(@PathVariable String accountNumber, @RequestBody TransactionDTO withdrawalTransaction) throws InsufficientBalanceException {
    return new ResponseEntity<>(accountService.debit(accountNumber, withdrawalTransaction),HttpStatus.OK);
}


  • 답변 # 1

    여러 유형의 인출에 대해 하나의 끝점 만 갖기를 원하거나 필요로하는 경우 다른 유형을 정의하는 Enum을 갖고이를 TransactionDTO에 필드로 추가 할 수 있습니다.

    이 같은:

    public enum DebitType { BILL_PAYMENT, WITHDRAW, ... }
    public class DebitTransactionDTO {
        @NotNull
        private Double amount;
        @NotNull
        private DebitType debitType;
        public DebitTransactionDTO(@NotNull Double amount, @NotNull DebitType debitType) {
            super();
            this.amount = amount;
            this.debitType = debitType;
        }
        ... Getters Setters
    }
    
    

    신용 거래에 차변 유형을 원하지 않기 때문에 신용 및 차변에 대해 별도의 DTO 클래스를 가질 수 있습니다 (따라서 DebitTransactionDTO 클래스 이름).

  • 답변 # 2

    하나님의 사랑을 위해 돈과 관련된 어떤 것도 float 나 double을 사용하지 마십시오.

  • 이전 Laravel 설치 항해 문제 ((23) 본문 쓰기 실패)
  • 다음 command - 내 Python 앱이 실행 파일로 변환되지 않는 이유는 무엇입니까?