我似乎无法使用 Hono 和 Axios 从发布请求中获取任何参数。
我的bun hono服务器很简单:
import { Hono } from 'hono';
import { cors } from 'hono/cors';
const app = new Hono();
app.use('*', cors());
app.post('/products', async (c) => {
const body = await c.req.parseBody();
const { category, search } = body;
console.log('Received parameters:');
console.log(` category: ${category}`);
console.log(` search: ${search}`);
});
export default {
port: 3000,
fetch: app.fetch,
}
反应客户端看起来像:
const data = {
category: 'electronics',
search: 'laptops',
};
axios.post('http://localhost:3000/products', data)
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error);
});
但是我在终端中未定义:
Started server http://localhost:3000
Received parameters:
category: undefined
search: undefined
实际上,整个请求正文只是一个空的
{}
。
我也尝试过使用c.req.param("category")
,但它也没有帮助......
感谢您的帮助。
req.parseBody()
适用于 multipart/form-data
或 application/x-www-form-urlencoded
身体类型,它看起来不像 axios 数据的格式。
req.param()
用于像 POST /products/:category
这样的路径参数,示例中的端点未设置为接受,并且不会通过 axios POST 请求发送。
如果端点期望接收 JSON,请使用
req.json()
而不是 req.parseBody()
。查看 https://hono.dev/api/request 了解可用的正文解析选项(文本等也可用)。