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

调用API后如何返回未格式化原始字符串(非JSON/XML格式)

解决API返回原始未格式化字符串的方案

不管是REST还是SOAP框架,通常都会自动帮你把响应序列化并格式化为JSON或XML,但如果要对接遗留模型、需要原样传输复杂响应的话,咱们可以通过以下方式跳过自动格式化,直接返回原始字符串:

1. REST API场景(以Spring Boot为例)

Spring Boot这类框架默认会用Jackson把返回值转成JSON,要返回原始字符串的话:

  • 直接把接口方法的返回类型设为String,如果你的类加了@RestController注解,直接返回字符串就会原样输出,不需要额外加序列化注解
  • 要是需要更明确地控制响应类型,可以手动构建ResponseEntity,指定内容类型为text/plain,彻底避免框架的自动格式化:
@GetMapping("/legacy-data")
public ResponseEntity<String> fetchLegacyResponse() {
    String rawResponse = callLegacyModel(); // 调用遗留模型拿到原始字符串
    return ResponseEntity.ok()
            .contentType(MediaType.TEXT_PLAIN)
            .body(rawResponse);
}

2. SOAP API场景(以JAX-WS为例)

SOAP服务默认会把返回对象序列化为标准XML,要返回原始XML字符串的话:

  • 把服务方法的返回类型改成javax.xml.transform.Source,直接传入原始XML的流对象,这样JAX-WS会直接传输原始内容,不会做额外处理:
@WebMethod
public Source getLegacySoapData() {
    String rawXml = callLegacySoapModel(); // 获取遗留模型返回的原始XML字符串
    return new StreamSource(new StringReader(rawXml));
}
  • 也可以直接操作响应输出流,把原始字符串写入流中,完全绕开框架的序列化逻辑。

关键注意点

  • 提前和接口调用方沟通好,因为默认情况下REST客户端可能期望JSON、SOAP客户端期望标准XML结构,确保对方能处理原始字符串响应
  • 绝对不要对遗留模型返回的字符串做任何转义、格式化操作,比如别用ObjectMapper去序列化它,直接返回就行
  • 如果原始内容包含特殊字符(比如XML里的<、>),直接返回字符串能保证这些字符完全保留,不会被框架自动转义

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:27:01