其余哪些操作可使用发布或删除?

时间:2018-06-28 03:47:21

标签: spring rest spring-boot architecture

我创建了一个银行应用程序,我想在其中编写一个休息服务以删除帐户。因此我们需要一个帐号。出于安全考虑,我认为我无法在url中传递帐号no。所以我在请求正文中传递了它。我认为,如果我尝试将其与delete一起使用,它将运行良好,但再次可能是安全问题。 所以在那种情况下,我需要使用post而不是delete以便我可以在请求正文中传递帐号no吗?

     @PostMapping("/account")
        public void deleteAccount(@RequestBody @Valid final AccountNoDto accountNoDto) {
            return accountService.deleteAccount(accountNoDto);
        }
or

  @DeleteMapping("/account/{accountNo}")
    public void deleteAccount(@PathVariable Long accountNo) {
        return accountService.deleteAccount(accountNo);
    }

2 个答案:

答案 0 :(得分:2)

您应该使用@DeleteMapping,因为您要删除一条记录。 HTTP动词应符合该功能的作用。

但是不要将帐号和端点一起发送。 将端点写为-

print

应该在后端从您将与请求一起发送的令牌中检索帐号,因此所有请求GET,POST,PUT,DELETE都将具有相同的uri,并且将从令牌中获取该帐号后端。 如果您想知道春季如何完成此操作,请阅读 SecurityContextHolder

答案 1 :(得分:0)

理想情况下,我们使用@DeleteMapping进行删除操作,并使用@PostMapping进行数据的新创建和更新。我不认为帐户ID是要在网址中显示的敏感信息。你可以去@DeleteMapping