İki uygulama var, bunlardan biri bar, HAL biçiminde bana kaynaklar sağlıyor. Diğer, bu servisi tüketmek için bcm'dur. yanıtı bara aitTüketim Spring Hateoas Restservice with RestTemplate
Örnek şuna benzer:
[
{
"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"
}
}
},
{
...
Şimdi Bahar RestTemplate kullanarak
bcm o tüketmeye çalışın. Benim Çözümüm çalışıyor, ama bu çözümden bir şekilde memnun değilim ve sanırım daha temiz bir yol var. Gördüğünüz gibi
@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;
}
birkaç çirkin kod vardır: gibi
RestService tüketen Müşteri-Kod görünüyor. Bunlardan biri, koleksiyonlarım için herhangi bir jenerik yok. Diğer nokta, ben Resource_ID çok karmaşık ve ben self url ayıklamak için birçok kez StringUtils.remove kullanın.
Bahardan HAL-Cevabı tüketmenin daha uygun bir yolu olması gerektiğinden eminim.
Teşekkürler.
tüm güncel bilgiler bu yanıt için son sürümleri ile? – Snekse
Ne yazık ki değil. Ama o zamandan beri pek fazla araştırma yapmadım. –
Alt sınıflamadan kaçınmak için 'new ParameterizedTypeReference>() {}' kullanabilirsiniz. –
afaulconbridge