1.成果展示Nacos 配 Webhook 卡片内 Apifox 风格 curl含 query / body / 响应 JSON左图apifox右图飞书群【明天贴】2. 请求体有 Content-Type 却无 body的解决方法客户端(Apifox) → Gateway(Netty) → api-app(Tomcat) → GlobalExceptionHandler → 飞书断点现象处理GatewayGET/DELETE 带 body 时默认路由可能不转发 bodyReproduceBodyPreserveGlobalFilterjoin body 再装饰getBody()Content-LengthTomcatGET 的InputStream常读不到body业务也不读网关读完后写内网头X-Brain-Reproduce-Body-B64≤24KBapi-app 解码写入TraceContext双层 WrapperRequestTrace内层有缓存PlaintextDebugCapture再包一层空外壳不再往ContentCachingRequestWrapperreadCachedBody沿链向内找优先TraceContext字节快照3. Apifox body 类型 → curl 片段BodycurlQuery已在 URL?keyvalueJSON--data-raw {k:1}紧凑 JSONx-www-form-urlencoded--data-raw a1b2multipart/form-data解析boundary→ 多行--form namevalue文件用--form f文件名实现ReproduceRequestBodyCapture(字节Content-Type) →MultipartFormParser/ApifoxCurlBodyAppender。预热RequestTraceServletFilter对「有 Content-Length / chunked / 有 Content-Type」尝试readAllBytes()multipart 必须用字节别先转 String。4. 飞书展示层问题原因处理Accept: */*变Accept: /卡片 Markdown 吃掉*推送前FeishuMarkdownEscaper\*缺Connection经网关常无此头缺省补keep-alive缺--form见 §2 body 未到 api-app网关 relay multipart 解析对外 URLX-Forwarded-Host/X-Forwarded-Proto拼xxx.xxxx.com别用内网。5. 避坑和安全设计发 dev不要用tar命令覆盖 ECS的配置文件.env不然会把NACOS_PASSWORD冲成nacos→ 全链 403。reproduceBlock可含Authorization仅飞书 critical不进security_log明文。
实现飞书群推送报错接口,critical复现curl
发布时间:2026/6/4 1:23:31
1.成果展示Nacos 配 Webhook 卡片内 Apifox 风格 curl含 query / body / 响应 JSON左图apifox右图飞书群【明天贴】2. 请求体有 Content-Type 却无 body的解决方法客户端(Apifox) → Gateway(Netty) → api-app(Tomcat) → GlobalExceptionHandler → 飞书断点现象处理GatewayGET/DELETE 带 body 时默认路由可能不转发 bodyReproduceBodyPreserveGlobalFilterjoin body 再装饰getBody()Content-LengthTomcatGET 的InputStream常读不到body业务也不读网关读完后写内网头X-Brain-Reproduce-Body-B64≤24KBapi-app 解码写入TraceContext双层 WrapperRequestTrace内层有缓存PlaintextDebugCapture再包一层空外壳不再往ContentCachingRequestWrapperreadCachedBody沿链向内找优先TraceContext字节快照3. Apifox body 类型 → curl 片段BodycurlQuery已在 URL?keyvalueJSON--data-raw {k:1}紧凑 JSONx-www-form-urlencoded--data-raw a1b2multipart/form-data解析boundary→ 多行--form namevalue文件用--form f文件名实现ReproduceRequestBodyCapture(字节Content-Type) →MultipartFormParser/ApifoxCurlBodyAppender。预热RequestTraceServletFilter对「有 Content-Length / chunked / 有 Content-Type」尝试readAllBytes()multipart 必须用字节别先转 String。4. 飞书展示层问题原因处理Accept: */*变Accept: /卡片 Markdown 吃掉*推送前FeishuMarkdownEscaper\*缺Connection经网关常无此头缺省补keep-alive缺--form见 §2 body 未到 api-app网关 relay multipart 解析对外 URLX-Forwarded-Host/X-Forwarded-Proto拼xxx.xxxx.com别用内网。5. 避坑和安全设计发 dev不要用tar命令覆盖 ECS的配置文件.env不然会把NACOS_PASSWORD冲成nacos→ 全链 403。reproduceBlock可含Authorization仅飞书 critical不进security_log明文。