You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止Feign对字符串数据进行引用与转义?

解决Feign转发字符串时自动加引号转义的问题

嘿,我正好碰到过类似的Feign转发问题!你说的这种字符串被自动加引号、内部转义的情况,本质是Feign默认把请求体当成JSON对象来序列化了,咱们可以从这几个方向解决:

1. 配置Feign直接发送原始字符串,跳过自动序列化

Feign默认会用Jackson这类转换器把请求体转成JSON结构,如果你要原样发送字符串,得让它别多做这个步骤。

先调整你的Feign接口,把请求参数设为String类型:

@Headers({"Accept: application/json", "Content-Type: application/json"})
interface ExampleClient {
    @PostMapping("/your-target-endpoint")
    ResponseEntity<String> forwardRawData(@RequestBody String rawString);
}

然后写个自定义配置类,替换掉默认的JSON编码器,改用纯字符串的转换器:

@Configuration
public class FeignRawStringConfig {
    @Bean
    public Encoder encoder() {
        return new SpringEncoder(() -> new HttpMessageConverters(
            new StringHttpMessageConverter(StandardCharsets.UTF_8)
        ));
    }
}

记得把这个配置关联到你的Feign客户端上,比如在@FeignClient注解里加configuration = FeignRawStringConfig.class,这样Feign就会直接把你的字符串原封不动发出去,不会做JSON序列化的额外处理。

2. 调整Content-Type,让Feign识别为纯文本

如果服务器能接受text/plain类型的请求体,那更简单——直接把Content-Type改成text/plain,Feign就不会把字符串当成JSON来处理了:

@Headers({"Accept: application/json", "Content-Type: text/plain"})
interface ExampleClient {
    @PostMapping("/your-target-endpoint")
    ResponseEntity<String> forwardRawData(@RequestBody String rawString);
}

这种方式不需要额外配置转换器,适合服务器兼容纯文本请求的场景。

3. 手动构造请求体,完全掌控发送内容

要是上面两种方法都不适用,还可以用Feign的RequestTemplate手动拼请求,彻底绕过自动序列化逻辑:

interface ExampleClient {
    @RequestLine("POST /your-target-endpoint")
    @Headers({"Accept: application/json", "Content-Type: application/json"})
    ResponseEntity<String> forwardRawData(RequestTemplate template);
}

调用的时候直接把你的字符串塞进请求体:

String yourRawData = "你要转发的原始字符串内容";
RequestTemplate template = new RequestTemplate();
template.body(yourRawData, StandardCharsets.UTF_8);
exampleClient.forwardRawData(template);

这种方式完全由你控制请求体的内容,绝对不会出现自动转义的问题。


最后提醒下:你的代理既然只需要扫描字符串,别让Feign把请求体解析成JSON对象是关键,保持它的原始字符串形态就能解决问题啦~

内容的提问来源于stack exchange,提问作者Jeff Gaer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:30:55