我有两个终点
http://localhost:8080/account/v1/credit/{accountnumber}(post->transactiondto)
http://localhost:8080/account/v1/debit/{accountnumber}(post->transactiondto)
我的交易是:
public class TransactionDTO {
@NotNull
private Double amount;
public TransactionDTO(@NotNull Double amount) {
super();
this.amount = amount;
}
... Getters Setters
}
基本上,当调用credit时,dto的数量被添加到与给定accountnumber相关联的账户余额中,到目前为止没有问题。
但是,当调用debit时,正如您在下面看到的,有多种取款交易类型(并且随着应用程序变大,可以添加更多的取款交易类型),例如billpaymenttransaction、drafttransaction。
我的问题是,我应该如何设计请求类(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条答案
按热度按时间gmol16391#
如果您只想/需要为多种类型的取款使用一个端点,可以使用一个枚举来定义不同的类型,并将其作为字段添加到transactiondto中。
像这样:
由于您可能不希望在贷方事务中使用debit类型,因此您可能希望为credit和debit使用单独的dto类(因此使用debittransactiondto类名)。