6

Spring Android で RoboSpice を使用して REST API 呼び出しを実行しています。データは、Content-Type を application/x-www-form-urlencoded に設定して送信する必要があります。

次のような Pojo クラスがあるとします。

public class Pojo {
  private String pojoAttribute;

  // getter + setter
}

これが私のリクエストクラスです:

public class PojoRequest extends AbstractApiRequest<PojoResult> {

    private Pojo pojo;

    public PojoRequest(Pojo pojo) {
        super(PojoResult.class);
        this.pojo = pojo;
    }

    @Override
    public PojoResult loadDataFromNetwork() throws Exception {

        HttpEntity<Pojo> requestEntity = new HttpEntity<Pojo>(pojo, getDefaultHeaders());
        String url = buildUrlForPath("mypath");

        RestTemplate restTemplate = getRestTemplate();
        restTemplate.getMessageConverters().add(new FormHttpMessageConverter());

        return restTemplate.postForObject(url, requestEntity, PojoResult.class);
    }
}

したがって、次の本文を送信する必要があるとします:
pojo_attribute=foo

FormHttpMessageConverter が POJO を処理しないため、コードが機能しなくなりました。

私ができるようにしたいのは、次のようなものです。

public class Pojo {
  @FormProperty("pojo_attribute")
  private String pojoAttribute;

  // getter + setter
}

POJO を key=value 形式に変換する魔法の HttpMessageConverter を使用して、Jackson が @JsonProperty で行うのと同じ方法で @FormProperty (存在しない) アノテーションを調べて pojoAttribute を pojo_attribute に変換します。

私の質問は次のとおりです:
-既存のクラス/注釈でこれを行うことは可能ですか?
- 同様のことを行う別の方法はありますか?
- 独自の HttpMessageConverter と一連の注釈を作成して、それを行うとやり過ぎでしょうか?

4

0 に答える 0