2016-10-27 1 views
-1

ich OpenFeign bin mit/heucheln API-Anfragen senden:automatisch Anforderungstext-Objekt in JSON kodieren

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}") nicht funktioniert, weil er das Objekt in einen String konvertiert:

[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) 

Gibt es eine Möglichkeit, automatisch konvertieren Objekte in JSON-Objekte?

Dies ist, wie ich die Feign.Builder bauen:

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

'@ Produces' Annotation in JAX-RS existiert aus einem Grund –

Antwort

-1

Sie können versuchen,

def feignJson = JsonSlurper.toJson(feignObject) 

und dann gegebenenfalls

def pretyJsonOutput = JsonOutput.prettyPrint(feignJson) 

Check Details: http://groovy-lang.org/json.html