防止 spring-data-rest 解析 json

Prevent spring-data-rest from parsing json

我想使用 spring-data-rest 和 spring-data-jpa 将 post 请求作为字符串存储在数据库中。问题是 spring 试图将 json 请求主体转换为对象。我可以防止这种情况发生吗?我可以配置 spring 将请求主体保存为字符串吗?

下面是实体和存储库。

实体

@Entity
public class DatabaseRecord {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    private String json;

    public DatabaseRecord(String json) {
        this.json = json;
    }

    public Long getId() {
        return id;
    }

    public String getJson() {
        return json;
    }
}

存储库

public interface ExampleRepository extends CrudRepository<DatabaseRecord, Integer> {

    @Override
    @RestResource(exported = false)
    void delete(Integer integer);

    @Override
    @RestResource(exported = false)
    void delete(DatabaseRecord record);

    @Override
    @RestResource(exported = false)
    void delete(Iterable<? extends DatabaseRecord> iterable);

    @Override
    @RestResource(exported = false)
    void deleteAll();
}

如有任何帮助,我们将不胜感激。

谢谢。

The problem is that spring tries to convert the json request body to an object.

Spring Data REST 的主要思想 - 将 JSON 直接转换为 ORM 机制持久化的实例。如果可能的话,这些原始数据会保存在哪里?

Can I prevent this from happening?

不,你不能(至少,通过 Spring 数据 REST 模块)。

Can spring I configure spring to save the request body as a string?

您可以使用普通 Spring MVC 控制器,它将请求委托给 REST 存储库,但在它处理原始数据之前(例如将其保存到另一个 table)。


@RestResource(exported = false) 表示从 API 中排除该方法,它不会影响方法行为(如果您尝试将其用于此类目的)。