【发布时间】:2018-12-25 13:33:18
【问题描述】:
在为我的资源 Dashboard 创建 REST 端点时,我正在尝试遵循最佳实践。所以我计划在我的spring mvc控制器中创建用于创建的POST、用于更新的PUT和用于获取Dashboard的GET。
但是,我也有一个 validate API 端点,它不会保存或更新数据库中的任何内容,因此我计划将GET HTTP 方法用于validate 端点。但是我需要将很多参数传递给这个端点,所以我希望这是一个 @RequestBody 而不仅仅是通常的请求参数,因为 GET 有一个我可以超过的限制。
我是否应该使用POST 而不是GET,即使我不打算对数据库进行任何更改?
@PostMapping("/dashboards/{id}/validate")
public ResponseEntity<VisualMetadata> validateVisualMetadata(@PathVariable String id,
@Valid @RequestBody DashboardDto requestDto) {
}
UPD:DashboardDto不仅有String/long/integer等基元,还有Axis和Metric等嵌套的复杂数据类型
class DashboardDto {
String id;
Axis axis;
List<Metric> metrics;
}
【问题讨论】:
-
在此达到顶峰:stackoverflow.com/questions/978061/http-get-with-request-body 我只会使用
POST,而不会纠结于某事是否真正宁静。做你认为最有意义的事情,并且对以后维护代码的人来说最不意外。 -
我建议为此使用
POST。我使用GET仅用于请求数据,例如通过 ID 等标识符。
标签: java rest spring-mvc