gpt4 book ai didi

spring-boot - FeignClient : Serialize RequestParam to JSON

转载 作者:行者123 更新时间:2023-12-05 07:44:54 25 4
gpt4 key购买 nike

我有一个 spring boot 应用程序,我在其中尝试使用 Feign 与远程服务进行通信。我的@FeignClient定义如下:

@FeignClient(name="TEST_SERVICE", url="URL")
@Component
public interface SomeServiceClient
{
@RequestMapping(
method = RequestMethod.POST,
value = "/someService",
consumes = "application/json",
produces = "application/json"
)
SomeServiceResult getServiceResult(
@RequestParam(value = "mode") String mode,
@RequestParam(value = "payload") SomeServicePayload payload
);
}

我希望将 SomeServicePayload 类型的 payload 对象序列化为 JSON。我希望这会自动发生,但事实并非如此。相反,payload 被序列化为其完全限定的类名。

我是否需要为此客户端设置自定义编码器/解码器组合?我该怎么做?

最佳答案

@FeignClient 在后台使用 toString() 方法来构建请求字符串。创建正确请求的最简单方法是手动覆盖 toString() 方法:

class SomeServicePayload{
String payload;

@Override
public String toString() {
return "{\"payload\":\"" + payload + "\"}";
}
}

或者使用 ObjectMapper 对于复杂的对象:

public class SomeServicePayload{

private String payload;

public String getPayload() {
return payload;
}

public void setPayload(String payload) {
this.payload = payload;
}

private ObjectMapper mapper = new ObjectMapper();
@Override
public String toString() {
try {
return mapper.writeValueAsString(this);
} catch (JsonProcessingException e) {
//...
}
return null;
}
}

关于spring-boot - FeignClient : Serialize RequestParam to JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42438629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com