복붙노트

[SPRING] MongoRepository에서 일부 HTTP 메소드를 내보내는 것을 방지하려면 어떻게해야합니까?

SPRING

MongoRepository에서 일부 HTTP 메소드를 내보내는 것을 방지하려면 어떻게해야합니까?

나는 spring-data-rest를 사용하고 있으며 다음과 같은 MongoRepository를 가지고있다 :

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

나는 GET 메소드를 허용하지만 PUT, POST, PATCH 및 DELETE (읽기 전용 웹 서비스)를 사용 불가능하게하고 싶습니다.

http://docs.spring.io/spring-data/rest/docs/2.2.2.RELEASE/reference/html/#repository-resources.collection-resource에 따르면 이렇게 할 수 있어야합니다.

@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 요청을 계속 수행 할 수 있으므로 작동하지 않는 것 같습니다.

해결법

  1. ==============================

    1.Oliver에게 감사의 말을 전합니다.

    Oliver에게 감사의 말을 전합니다.

    @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);
    
    }
    
  2. from https://stackoverflow.com/questions/29169717/how-to-prevent-some-http-methods-from-being-exported-from-my-mongorepository by cc-by-sa and MIT license