如何使用Feign框架将URL参数添加为JSON?

时间:2017-05-24 11:12:11

标签: java json feign

我使用假装框架创建了一个休息客户端,如下所示:

@Headers({"Content-Type: application/x-www-form-urlencoded"})
public interface CampaignTrigger {

    @RequestLine("POST /event?actid={actid}&key={key}&event={event}&visit={visit}")
    TriggerResponse trigger(@Param("visit") Map<String, String> visit, @Param("actid") String actid, @Param("key") String key, @Param("event") String event);
}

这导致如下:

  

http://www.example.com/event?actid=1234&key=1234&event=cool_event&visit= {email=someone@hosting.com}

我想要的是'visit'参数是json,如下所示:

  

http://www.example.com/event?actid=1234&key=1234&event=cool_event&visit= { “电子邮件”: “someone@hosting.com”}

谁知道怎么做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以定义自己的Param.Expander来实现它,如下所示。

@Headers({"Content-Type: application/x-www-form-urlencoded"})
public interface CampaignTrigger {

    @RequestLine("POST /event?actid={actid}&key={key}&event={event}&visit={visit}")
    TriggerResponse trigger(@Param(value="visit", expander = JSONExpander.class) Map<String, String> visit, @Param("actid") String actid, @Param("key") String key, @Param("event") String event);
}

static final class JSONExpander implements Param.Expander {
    @Override
    public String expand(Object value) {
         // convert value to json string and return it.
        return xxxx;
    }
}