如何防止某些 HTTP 方法从我的 MongoRepository 中导出? [英] How to prevent some HTTP methods from being exported from my MongoRepository?

查看:17
本文介绍了如何防止某些 HTTP 方法从我的 MongoRepository 中导出?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 spring-data-rest 并且我有一个这样的 MongoRepository:

I'm using spring-data-rest and I have a MongoRepository like this:

@RepositoryRestResource
interface MyEntityRepository extends MongoRepository<MyEntity, String> {
}

我想允许 GET 方法,但禁用 PUT、POST、PATCH 和 DELETE(只读网络服务).

I would like to allow the GET methods but disable PUT, POST, PATCH and DELETE (read only web service).

根据 http://docs.spring.io/spring-data/rest/docs/2.2.2.RELEASE/reference/html/#repository-resources.collection-resource 我应该可以做到像这样:

According to http://docs.spring.io/spring-data/rest/docs/2.2.2.RELEASE/reference/html/#repository-resources.collection-resource I should be able to do that like this:

@RepositoryRestResource
interface MyEntityRepository extends MongoRepository<MyEntity, String> {

    @Override
    @RestResource(exported = false)
    public MyEntity save(MyEntity s);

    @Override
    @RestResource(exported = false)
    public void delete(String id);

    @Override
    @RestResource(exported = false)
    public void delete(MyEntity t);
}

它似乎不起作用,因为我仍然可以执行 PUT、POST、PATCH 和 DELETE 请求.

It doesn't seem to work as I can still do PUT, POST, PATCH and DELETE requests.

推荐答案

感谢 Oliver,下面是重写的方法:

Thanks to Oliver, here are the methods to override:

@RepositoryRestResource(collectionResourceRel = "people", path = "people")
public interface PersonRepository extends MongoRepository<Person, String> {

    // Prevents GET /people/:id
    @Override
    @RestResource(exported = false)
    public Person findOne(String id);

    // Prevents GET /people
    @Override
    @RestResource(exported = false)
    public Page<Person> findAll(Pageable pageable);

    // Prevents POST /people and PATCH /people/:id
    @Override
    @RestResource(exported = false)
    public Person save(Person s);

    // Prevents DELETE /people/:id
    @Override
    @RestResource(exported = false)
    public void delete(Person t);

}

这篇关于如何防止某些 HTTP 方法从我的 MongoRepository 中导出?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆