2016-04-27 8 views
3
löschen

Ich habe ein Repository für ein Benutzerobjekt und ich versuche, durch Kopieren der Signatur aus dem CRUD-Repository zu belichten löschen:Spring Data Erholung Repository aussetzen wird nicht

public interface UserRepository extends Repository<User, String>{ 
    @RestResource(exported = false) 
    User findOne(String username); 

    @PreAuthorize("hasRole('ROLE_USERS_READ')") 
    List<User> findAll(); 

    @PreAuthorize("hasRole('ROLE_USERS_WRITE')") 
    User save(User user); 

    @PreAuthorize("hasRole('ROLE_USERS_WRITE')") 
    void delete(String username); 

    @PreAuthorize("hasRole('ROLE_USERS_WRITE')") 
    void delete(User user); 
} 

einen Benutzer Speichern funktioniert:

Request URL:http://localhost:8080/api/users 
Request Method:POST 
Status Code:201 Created 

Aber wenn ich versuche, einen Benutzer zu löschen I http 405-Fehler erhalten, die von dem, was ich verstehen bedeutet, die Löschmethode wird nicht ausgesetzt zu sein:

Request URL:http://localhost:8080/api/users/testUser3 
Request Method:DELETE 
Status Code:405 Method Not Allowed 

Wenn ich einen Löschanruf mit einem CrudRepository mache, funktioniert es. Jede Hilfe oder Beratung wäre willkommen.

Danke, Ido

Antwort

3

fand ich die Ursache: T FindOne (ID id) und nichtig löschen (ID id) sind irgendwie verbunden. Wenn ich die Annotation @RestResource (exported = false) aus findOne entfernte, begann delete zu arbeiten. Scheint wie ein Fehler für mich, oder undokumentiertes Verhalten.

Ich habe findOne nicht verfügbar gemacht, weil mein Server es für die Authentifizierung verwendet hat, also konnte ich es nicht mit @PreAuthorize kommentieren. Was ich für den Server ein separates Verfahren zu tun am Ende ist das Hinzufügen von:

@PreAuthorize("hasRole('ROLE_USERS_READ')") 
User findOne(String username); 

@RestResource(exported = false) 
User getUserByUsername(String username); 

Hope this jemand hilft.

+0

Es funktioniert, danke für den Vorschlag –

Verwandte Themen