2014-04-29 8 views
8

Seguendo l'esempio spring.io qui: http://spring.io/guides/gs/accessing-data-rest/ per esporre un repository come servizio Web resto funziona perfettamente, ma non riesco a vedere come modificare l'URL dell'esposto servizio. La documentazione dell'API è un po 'vaga su cosa significano i parametri di annotazione, forse si presume una conoscenza precedente.Spring Boot Starter Data Rest cambia l'URL del repository dall'URI radice

Cosa voglio: un servizio HATEOAS ha accesso a http://localhost:8080/api/people per un repository People. Voglio raggiungere questo URL usando solo le annotazioni, non scherzando con la root di contesto o simili. Ho provato le seguenti annotazioni repository:

  • @RepositoryRestResource(collectionResourceRel = "api/people", path = "people")
  • @RepositoryRestResource(collectionResourceRel = "people", path = "api/people")
  • @RepositoryRestResource(collectionResourceRel = "api/people", path = "api/people")

nessuno di questi lavori.

So che probabilmente mi sono perso l'ovvio, molto apprezzato chiunque possa indicarlo.

+0

possibile duplicato del [primavera dati Resto percorso di base] (http: //stackoverflow.com/questions/22024716/spring-data-rest-base-path) – JBCP

+0

nelle application.properties: spring.data.rest.base-path =/api fonte: http: // docs.spring.io/spring-data/rest/docs/current/reference/html/#_changing_the_base_u ri – CobraEnergyDrink

risposta

8

Come di Spring Boot 1.2 si sono in grado di impostare questa proprietà:

spring.data.rest.baseUri=api

alternativa:

spring.data.rest.base-uri=api

(Primavera Boot utilizza un sistema relaxed binding)

NOTA: L'ho trovato se è stato esteso RepositoryRestMvcConfiguration con la configurazione personalizzata, la proprietà non ha effetto. Per maggiori informazioni consultare:

https://github.com/spring-projects/spring-boot/issues/2392

Una volta che la prossima versione di primavera Boot viene rilasciata (dopo la 1.2.1), la soluzione sarà quella di estendere la RepositoryRestMvcBootConfiguration invece.

+0

Esiste un reale vantaggio nell'impostare questo in una proprietà vs nella classe che estende RepositoryRestMvcConfiguration? –

+2

È un po 'più pulito e Springy poiché probabilmente hai comunque un file di proprietà delle applicazioni. Farlo nel codice è più tipizzazione e più codice che dovrebbe essere testato. Affidarsi alla convenzione di primavera significa che non è necessario testare il proprio codice o avere una proprietà diversa. Infine, rende più semplice l'imbarco di nuovi sviluppatori, poiché si tratta di una convenzione standard anziché di codice personalizzato. Per questa proprietà in sé non è probabilmente un grosso problema, ma è il principio di esso – JBCP

+0

http://docs.spring.io/spring-boot/docs/1.2.x/reference/html/common-application-properties.html È spring.data.rest.base-uri – adam0404

0

partire dalla primavera Boot 1.4.3 il codice dovrebbe essere:

spring.data.rest.base-path:api 

(credo baseUri è deprecata dal 1.2.3)

+0

Benvenuti in SO. Leggi questa [come risposta] (http://stackoverflow.com/help/how-to-answer) nel caso in cui non l'avessi letto. – thewaywewere

Problemi correlati