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
相关产品推荐
相关产品推荐

