首页 > 解决方案 > 如何在 Spring REST 中根据各自的职责使用 GET 和 POST 方法

问题描述

我想返回一个在服务器端创建的对象,但该方法不需要任何请求参数或请求正文来创建对象。在这种情况下,我无法决定应该使用哪种方法。我应该使用 GET 还是 POST?

@GetMapping("/")
public ResponseEntity<InitializeResponse> getNewlyCreated() {
    X x = new X();
    x = service.initialize(x.getId());
    return ResponseEntity.ok().body(new InitializeResponse(x));
}

但这对我来说似乎不对,因为方法返回新创建的对象,这导致我将责任更改为 POST 但为了使其成为 POST 方法,据我所知,我需要一个请求正文或请求参数来创建根据他们的反对。

我应该使用哪种方法?

标签: spring-bootapirestapi-designspring-restcontroller

解决方案


您不必在 POST 请求中使用正文或请求参数。您可以同时使用它们,POST 允许它们,但它们不是强制性的。但是,POST 绝对是您的用例的正确选择,因为 GET 请求不应更改您正在执行的应用程序的状态(我假设您正在存储您在此方法中创建的对象,例如在一个数据库)。如果您不存储任何内容而只是返回该对象(例如,使用转换工具,您只需转换并返回一些数据),GET 请求类型也足够了。


推荐阅读