2016-10-27 2 views
-1

J'utilise OpenFeign/feindre pour envoyer des demandes de l'API:encode automatiquement objet corps de la requête en JSON

import feign.Body 
import feign.Param 
import feign.RequestLine 

interface ApiServiceInterface { 
    @RequestLine("POST /container/{cid}/key/bulk") 
    @Body("{bulk}") 
    public void bulk(@Param("cid") Long cid, @Param("bulk") Bulk bulk) 
} 

@Body("{bulk}") ne fonctionne pas, car il convertit l'objet en une chaîne:

[ApiServiceInterface#bulk] ---> POST http://localhost:5050/container/11/key/bulk HTTP/1.1 
[ApiServiceInterface#bulk] Content-Length: 45 
[ApiServiceInterface#bulk] 
[ApiServiceInterface#bulk] com.***[email protected] 
[ApiServiceInterface#bulk] ---> END HTTP (45-byte body) 

Est-il possible de automatiquement convertir des objets en objets JSON?

Voilà comment je construis le Feign.Builder:

def mapper = new ObjectMapper() 
    mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")) 
    mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) 
    mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE) 
    mapper.readerForUpdating(this) 

    return Feign.builder() 
      .logger(new Logger.JavaLogger().appendToFile("logs/hoth.log")) 
      .logLevel(Logger.Level.BASIC) 
      .decoder(new JacksonDecoder(mapper)) 
      .encoder(new JacksonEncoder(mapper)) 
+0

L'annotation @ @ Produces dans JAX-RS existe pour une raison –

Répondre