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

如何使用Plumber返回无响应体且状态码为202的API响应

解决方案

你遇到的乱码问题是Plumber默认序列化逻辑导致的:当你仅手动设置状态码为202时,默认序列化规则会将隐式返回的NULL处理为无效字节,才会出现乱码符号。可以通过显式指定空响应体的方式解决,以下是可直接使用的写法:

#* @param msg The message to echo back.
#* @get /echo
function(msg="", res){
  # 设置202状态码
  res$status <- 202
  # 显式指定空二进制响应体,跳过默认序列化
  res$body <- raw(0)
  # 如果需要保留application/json响应头可以加下面这行,不需要可以删掉
  res$setHeader("Content-Type", "application/json")
}

如果需要更简洁的写法,也可以直接使用res$send方法直接返回空内容:

#* @param msg The message to echo back.
#* @get /echo
function(msg="", res){
  res$setHeader("Content-Type", "application/json")
  res$send("", status = 202)
}

原理解释

  1. 你最开始返回空函数或者设置res$body<-NULL时,Plumber的默认JSON序列化器会把NULL转为{},所以始终有一个空JSON对象的响应体。
  2. 后续使用contentType序列化器后,空返回可以正常输出无响应体的结果,但手动修改状态码后序列化逻辑异常,输出了无效的空字节导致乱码。
  3. 显式给res$body赋值为raw(0)(长度为0的二进制向量)或者调用res$send传入空字符串,都会强制Plumber跳过默认序列化步骤,直接返回完全为空的响应体,不会出现多余内容或者乱码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 00:45:03