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

Hono + Axios POST请求参数无法获取问题求助

解决Hono无法获取Axios POST请求参数的问题

问题核心是请求体解析方式不匹配:Axios默认会把JavaScript对象序列化为JSON格式的请求体(自动携带Content-Type: application/json请求头),但你当前用的c.req.parseBody()是Hono专门用来解析multipart/form-data或application/x-www-form-urlencoded类型请求体的方法,无法正确解析JSON数据,因此得到空对象。

另外你尝试的c.req.param("category")是用来获取URL路径参数(比如/products/:category这种格式)的,和请求体参数无关,自然拿不到值。

修正后的Hono服务器代码

把parseBody()替换为c.req.json()来解析JSON格式的请求体:

import { Hono } from 'hono';
import { cors } from 'hono/cors';

const app = new Hono();

app.use('*', cors());

app.post('/products', async (c) => {
  // 解析JSON格式的请求体
  const body = await c.req.json();
  const { category, search } = body;

  console.log('Received parameters:');
  console.log(`  category: ${category}`);
  console.log(`  search: ${search}`);

  // 记得返回响应,避免客户端收到空响应
  return c.json({ status: 'success', received: body });
});

export default { 
  port: 3000, 
  fetch: app.fetch, 
} 

额外说明

  • Axios发送对象时会自动设置Content-Type: application/json,所以你的客户端代码不需要修改。
  • 如果后续需要支持表单提交(比如application/x-www-form-urlencoded),可以继续使用parseBody(),但客户端需要调整为发送表单数据(比如用URLSearchParams包装数据)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 10:45:04