我正在我的@RestController
中编写POST API。
按照rest最佳实践,URL为
/v1/myapi/bank/{bank_id}/branch/{branch_id}
API还以@RequestBody BankDetails
的形式将其他参数作为输入。
class BankDetails {
String address;
String zip;
// Constructor, getters & setters
}
出于某种原因,我想把这个请求放入一个队列(在本例中为 * AWS SQS *),即BankDetails
对象与关联的bank_id
和branch_id
。
为了将其存储为一个对象,我修改了BankDetails
类以包含bank_id
和branch_id
。
例如:
class BankDetails {
@JsonProperty(access = JsonProperty.Access.READ_ONLY)
String bankId;
@JsonProperty(access = JsonProperty.Access.READ_ONLY)
String branchId;
String address;
String zip;
// Contructor, getters & setters
}
我还修改了@RestController
中的@PostMapping
方法来提供数据。
@PostMapping(value = "/v1/myapi/bank/{bank_id}/branch/{branch_id}", produces = "application/json")
public ResponseEntity<MyResponse> createBankBranch(
@PathVariable(name = "bank_id") String bankId,
@PathVariable(name = "branch_id") String branchId,
@RequestBody BankDetails bankDetails) {
// Added these 2 lines.
bankDetails.setBankId(bankId);
bankDetails.setbrnachId(branchId);
}
首先在path & feed中获取与在RequestBody对象中相同的参数,这是一个好的实践吗?
另外,我不能使用/v1/myapi/bank/{bank_id}
,因为它是一个单独的API。
1条答案
按热度按时间kr98yfug1#
简单的
POST /myapi/bank
和所有的细节作为DTO和不担心任何事情。我认为您没有遵循AFAIK的“最佳做法”,您提供的此路径将用于在给定bank_id的上下文中修改具有给定id的分支,而不是银行本身
例如,有
PUT /bank/bankId/vault/cash
可以修改给定银行的现金总额(愚蠢,但我认为它作为展示罚款),而不是银行本身,但这是你试图做的。