Spring RestTemplate kullanarak JSON olarak temsil edilen bir sorgu parametresine sahip bir HTTP bitiş noktasına bir istekte bulunmam gerekiyor. Spring RestTemplate ile JSON olarak temsil edilen sorgu parametresi nasıl kullanılır?
restTemplate.getForObject(
apiRoot + "/path" + "?object={myObject}",
Response.class,
new MyObject())
İşte
MyObject
JSON dönüştürülecek (ve tabii ki URL olarak kodlanmış) gerekir. Ancak
RestTemplate
, bunun yerine
toString
çağrısı ile
String
'a dönüştürür.
MyObject
, JSON tarafından Jackson'a dönüştürülebilir.
UriComponentsBuilder.fromHttpUrl(apiRoot)
.path("/path")
.queryParam("object", new MyObject()))
.queryParam("access_token", accessToken)
.toUri()
eliyle ObjectMapper.writeValueAsString
arama önlemek için bir yol var mı: UriComponentsBuilder
aynı şekilde davranır?
Güncelleme: netleştirmek için, sonuçta ben 42
eşit değerde benim URI'de (veya URL encodeded formu ?object=%7B%22key%22%3A42%7D
olarak) MyObject
gelmiştir verilen bir özellik key
?object={"key":42}
olması gerekir.
Eğer uygunsa 'MyObject.toString()' 'de ObjectMapper.writeValueAsString 'öğesini kullanabilirsiniz. – TheKojuEffect
Yapabilirim ama muhtemelen iki sebepten dolayı olmaz. İlk önce DTO'larım Bahar Bağlamından bağımsız olarak saklayacağım, çünkü gerçek bir projede bağlam yoluyla önceden yapılandırılmış 'ObjectMapper'ı telleyeceğim. Ve ikincisi, oldukça belirsiz, ben nesneler JSON dönüşüm için alternatif yolu tanıtmak ve doğrudan ihtiyacım olduğunda 'ObjectMapper' arayarak açık kalmayı tercih ederim. – raindev