Frühjahr RestTemplate - Übergeben Sie in Objekt-Parameter in GET

Wie verwende ich das RestTemplate zu übergeben, die ein Objekt als parameter? Zum Beispiel, sagen, dass ich die folgenden services mit Spring Boot:

@RequestMapping(value = "/get1", method = RequestMethod.GET)
public ResponseEntity<String> get1(@RequestParam(value = "parm") String parm) {

    String response = "You entered " + parm;
    return new ResponseEntity<String>(response, HttpStatus.OK);
 }

@RequestMapping(value = "/get2", method = RequestMethod.GET)
public ResponseEntity<String> get2(@RequestParam(value = "parm") MyObj parm) {

    String response = "You entered " + parm.getValue();
    return new ResponseEntity<String>(response, HttpStatus.OK);
 }

Wenn ein client, nennen wollte der erste Dienst, Sie könnte verwenden Sie die folgenden:

//This works fine
RestTemplate restTemplate = new RestTemplate();
String response = restTemplate.getForObject("http://localhost:8080/get1?parm={parm}", String.class, "Test input 1");

Aber wenn ein Kunde anrufen wollte der zweite Dienst sind, bekommen Sie einen 500-Fehler mit den folgenden:

//This doesn't work
MyObj myObj = new MyObj("Test input 2");
RestTemplate restTemplate = new RestTemplate();
String response = restTemplate.getForObject("http://localhost:8080/get2?parm={parm}", String.class, myObj);

Den MyObj-Klasse sieht wie folgt aus:

@JsonSerialize
public class MyObj {
    private String inputValue;

    public MyObj() {
    }

    public MyObj(String inputValue) {
        this.inputValue = inputValue;
    }

    public String getInputValue() {
        return inputValue;
    }

    public void setInputValue(String inputValue) {
        this.inputValue = inputValue;
    }
}

Ich gehe davon aus, dass das problem ist, dass die myObj ist nicht immer richtig-setup als parameter. Wie gehe ich über das tun dies?

Vielen Dank im Voraus.

InformationsquelleAutor | 2016-07-07

Schreibe einen Kommentar