2014-07-04 16 views
9

Io non riesco a essere in grado di mappare la mia repository in qualsiasi posizione diversa da quanto segue:Come posso mappare Spring Boot @RepositoryRestResource a un URL specifico?

@RepositoryRestResource(collectionResourceRel = "item", path = "item") 
public interface ItemRepository extends PagingAndSortingRepository<Item, Long> { 

ho pensato che posso usare:

path = "/some/other/path/item" 

ma la mappatura non risolve. Ottengo:

HTTP ERROR 404 

Problem accessing /some/other/path/item. Reason: 

Not Found 

In primavera-dati javadoc path è definito come: "The path segment under which this resource is to be exported."

Che cosa sto facendo di sbagliato?

+1

Ti dispiace se ti chiedo cosa hai finito? Mi trovo nella stessa identica posizione di te. – Pytry

risposta

0

Penso che l'attributo path sia utilizzato per specificare un percorso segmento (quindi nessuna barra). Il "/ some/other/path" dovrebbe essere il percorso servlet o il percorso di contesto (cioè niente a che fare con Spring Data).

+0

Sì, ma ancora ... Come faccio a pubblicare questa risorsa in/some/other/path/item? Ho pensato che potevo specificarlo con la variabile '' 'path'''. ** È ** Spring Data che lo pubblica, non dovrebbe essere configurabile dove? – stratosgear

+0

Dovresti occuparti degli sviluppatori di Spring Data. È pubblicato come una risorsa servlet, quindi * puoi * farlo come qualsiasi percorso desiderato modificando i mapping dei servlet. Ma "/" è un carattere speciale negli URI, quindi non sarei sorpreso se fosse proibito nell'attributo path dell'annotazione Spring Data. Perchè importa? –

9

È necessario estendere lo RepositoryRestMvcConfiguration e sostituire lo configureRepositoryRestConfiguration(RepositoryRestConfiguration config) per impostare il baseUri. per esempio.

@Configuration 
public class MyRepositoryRestMvcConfiguration extends RepositoryRestMvcConfiguration { 

    private static final String MY_BASE_URI_URI = "/my/base/uri"; 

    @Override 
    protected void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) { 
     super.configureRepositoryRestConfiguration(config); 
     config.setBaseUri(URI.create(MY_BASE_URI_URI)); 
    } 
} 
+0

Per quanto sia disapprovato, non ho potuto resistere ad aggiungere il mio "Grazie!" qui: questo ha risparmiato un sacco di grattacapi e penseresti che i ragazzi di Spring avrebbero aggiunto questa pepita di informazioni alla documentazione di riferimento (o al Javadoc, o anche al codice sorgente ...) :) – Marco

6

Per cambiare l'URI di base, si può anche solo aggiungere che questo application.properties:

spring.data.rest.base-path=/my/base/uri 
4

proprietà dell'applicazione corretta è la seguente: spring.data.rest.base-path=/my/base/path(base-path invece di base-uri)

Problemi correlati