2015-03-20 17 views
19

Bahar-veri-dinlenme kullanıyorum ve böyle bir MongoRepository var: Ben GET yöntemlerini devre dışı bırakabilir PUT, POST, PATCH'i izin ve SİL istiyorumMongoRepository'umdan bazı HTTP yöntemlerinin aktarımı nasıl engellenir?

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

(sadece web hizmeti okuyun).

http://docs.spring.io/spring-data/rest/docs/2.2.2.RELEASE/reference/html/#repository-resources.collection-resource göre böyle yapmak mümkün olmalıdır:

@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); 
} 

Ben hala, PUT, POST, YAMA ve isteklerini DELETE yapabilirsiniz olarak çalışmaya görünmüyor.

+1

, bu başarısızlığının gösteren bir test durumu/test projesi sağlayabilir? –

+0

Bugün tekrar test ettikten sonra, aslında çalışıyor. Ancak, ben/myEntities üzerinde GET yöntemini kısıtlamak için nasıl bulamıyor. Liste findAll() 'için ek açıklama ekleme ;' hiçbir şey yapmaz. – avandecreme

+2

MongoRepository, 'PagingAndSortingRepository' öğesini genişletir, böylece' findAll (Pageable pageable) 'öğesini yeniden sınıflandırmanız ve açıklama eklemeniz gerekir. –

cevap

33

sayesinde Oliver, burada yöntemler geçersiz kılmak şunlardır:

çalışması gerekir
@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); 

} 
+0

koymayı devre dışı bırakabilir miyim? Tüm yeni varlıkların POST – Laures

+0

aracılığıyla oluşturulmasını istiyorum. 'Public Person insert (Kişi öğesi)' ifadesini eklemeye çalışabilirsiniz, ancak çalışacağından şüpheliyim. – avandecreme

İlgili konular