如何配置Spring Data REST以返回为POST请求创建的资源的表示形式?

Mar*_*ewd 19 rest spring spring-data-jpa

我正在关注spring-data-rest指南使用REST访问JPA数据.当我发布一条新记录时,它会被插入(响应是201).这很好,但是有没有办法配置REST MVC代码来返回新创建的对象?我宁愿不必发送搜索请求来查找新实例.

Oli*_*ohm 19

您不必搜索创建的实体.正如HTTP规范所建议的那样,POST返回状态代码的请求201 Created应该包含一个Location包含刚刚创建的资源的URI的头.

因此,您需要做的就是有效GET地向该特定URI 发出请求.春季数据REST也有两种方法RepositoryRestConfiguration.setReturnBodyOnCreate(…),并….setReturnBodyOnUpdate(…)您可以使用它来配置框架立即返回刚刚创建的资源的表示.

  • 应该在哪里调用RepositoryRestConfiguration.setReturnBodyOnCreate(true)? (6认同)
  • 基于这个问题,我实际上已经更新了所有Spring Data REST入门指南以包含这些信息,因此您不必来这里发现该功能. (2认同)

And*_*rey 10

Spring Boot示例:

@Configuration
@EnableMongoRepositories
@Import(RepositoryRestMvcConfiguration.class)
@EnableAutoConfiguration
public class Application {

    public static void main(String[] args) {

        ConfigurableApplicationContext ctx = SpringApplication.run(Application.class, args);

        RepositoryRestConfiguration restConfiguration = ctx.getBean(RepositoryRestConfiguration.class);

        restConfiguration.setReturnBodyOnCreate(true);
    }
}
Run Code Online (Sandbox Code Playgroud)

要么

@Configuration
@EnableMongoRepositories
@EnableAutoConfiguration
public class Application extends RepositoryRestMvcConfiguration {

    public static void main(String[] args) {

        SpringApplication.run(Application.class, args);
    }

    @Override
    protected void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
        super.configureRepositoryRestConfiguration(config);
        config.setReturnBodyOnCreate(true);
    }
}
Run Code Online (Sandbox Code Playgroud)

祝好运!

  • 不推荐使用configureRepositoryRestConfiguration ...从2.4开始,直接实现RepositoryRestConfigurer.configureRepositoryRestConfiguration(RepositoryRestConfiguration)或扩展RepositoryRestConfigurerAdapter并覆盖该方法. (4认同)

Str*_*ess 5

如果您使用的是Spring Boot,则可以将以下行分别添加到application.properties文件中以进行POST(创建)和PUT(更新)

spring.data.rest.return-body-on-create=true
spring.data.rest.return-body-on-update=true
Run Code Online (Sandbox Code Playgroud)