Ho due applicazioni, una si chiama bar, cosa mi fornisce le risorse in formato HAL. L'altro è bcm per consumare quel servizio.Consumare Spring Hateoas Restservice con RestTemplate
Esempio di risposta bar si presenta così:
[
{
"name":"Brenner/in",
"_links":{
"self":{
"href":"..host/bbsng-app-rest/betrieb/15"
}
}
},
{
"name":"Dienstleistungshelfer/in HW",
"_links":{
"self":{
"href":"..host/bbsng-app-rest/betrieb/4"
}
}
},
{
...
Ora cerco di consumare che dal miliardi di metri cubi usando Primavera RestTemplate. La mia soluzione funziona, ma non sono felice con quella soluzione in qualche modo e immagino ci sia un modo più pulito.
mio client-Code che consumano RestService assomiglia:
@Autowired private RestTemplate template;
@Override
@SuppressWarnings("unchecked")
public BerufListe findeAlleBerufe() {
final BerufListe berufListe = new BerufListe();
final ResponseEntity<List> entity = template.getForEntity(LinkUtils.findBeruf(), List.class);
if (OK.equals(entity.getStatusCode())) {
final List<LinkedHashMap> body = entity.getBody();
for (final LinkedHashMap map : body) {
final LinkedHashMap idMap = (LinkedHashMap) map.get("_links");
String id = remove(String.valueOf(idMap.get("self")), "href=");
id = remove(id, "{");
id = remove(id, "}");
final String name = String.valueOf(map.get("name"));
final Beruf beruf = new Beruf(id, name);
berufListe.add(beruf);
}
}
return berufListe;
}
ci sono poche codice di brutto, come si vede. Uno di questi è che non ho generici per le mie collezioni. L'altro punto, ho il Resource_ID molto complicato, e io uso StringUtils.remove molte volte per estrarre l'auto url.
Sono sicuro che ci deve essere un modo più conveniente per consumare HAL-Response entro la primavera.
Grazie.
Qualsiasi aggiornamento con le recenti versioni di questa risposta? – Snekse
Purtroppo no. Ma da allora non ho fatto molte ricerche. –
È possibile utilizzare 'new ParameterizedTypeReference>() {}' per evitare la sottoclasse. –
afaulconbridge