POSTMAN 未在 POST 请求中的 body 中发送任何内容
POSTMAN not sending anything in the body in POST requests
我正在尝试通过 POSTMAN 测试 /login API(通过 FE 它工作正常)但它没有
在 body 部分显示任何内容,即使我正在发送 body 数据。
但是打印来自BE的请求时,body是空的...
....
body: {},
....
与使用 FE 时不同:
....
body: {data: { username: 'admin', password: 'admin' }},
....
知道发生了什么事吗?如果需要提供任何其他信息 - 请告诉我
我知道它正在通过,因为服务器响应 500 和消息
TypeError: Cannot read property 'username' of undefined
奇怪的是,我发送的数据在请求 object 中根本找不到 :(
编辑:
这是我在 FE 中的称呼:
return axios.post('login', { data: user })
并且用户是:
user: {
username: 'admin',
password: 'admin'
}
所以格式应该是对的
data: {
username: 'admin',
password: 'admin'
}
因为这就是我在 BE 端访问它的方式
req.body.data.username
编辑 2:
ultra-super-rare-weird 部分是,JEST 工作正常:)
const creds = {
data: {
username: 'admin',
password: 'admin'
}
}
return request(app)
.post("/api/v1/login")
.send(creds)
.expect(200)
.then(res => {
expect(res.body).toMatchSnapshot()
})
并且这个测试通过了.... f**k me 伙计们.. 发生了什么事?
body 的语法看起来像 JSON,但您已将 body 的类型指定为“原始文本”。这会将您请求的 Content-type header 设置为“text/plain”,这可能会导致您的后端无法实际读取 body(因为它需要一个 JSON object).
只需从“文本”切换到“JSON”,将当前的 body 括在花括号中(这样您实际上发送的是单个 JSON object 并设置了数据 属性)并再次尝试发送请求。这次 content-type header 将正确设置为“application/json”,您的后端将成功读取数据。
如果您使用的是 Express 服务器,请尝试在路由前初始化 Express 应用程序后立即在服务器中解析您的 body
const app = express();
app.use(express.json());
在Postman的请求头配置中添加如下参数:
Content-Type: application/json
Content-Length
Content-Length的值是Postman在发送请求时自动计算的。这两个值都用于识别请求主体的媒体类型并准确解析它。丢失时,正文可能会被完全忽略(取决于服务器)。
我正在尝试通过 POSTMAN 测试 /login API(通过 FE 它工作正常)但它没有 在 body 部分显示任何内容,即使我正在发送 body 数据。
但是打印来自BE的请求时,body是空的...
....
body: {},
....
与使用 FE 时不同:
....
body: {data: { username: 'admin', password: 'admin' }},
....
知道发生了什么事吗?如果需要提供任何其他信息 - 请告诉我
我知道它正在通过,因为服务器响应 500 和消息
TypeError: Cannot read property 'username' of undefined
奇怪的是,我发送的数据在请求 object 中根本找不到 :(
编辑:
这是我在 FE 中的称呼:
return axios.post('login', { data: user })
并且用户是:
user: {
username: 'admin',
password: 'admin'
}
所以格式应该是对的
data: {
username: 'admin',
password: 'admin'
}
因为这就是我在 BE 端访问它的方式
req.body.data.username
编辑 2:
ultra-super-rare-weird 部分是,JEST 工作正常:)
const creds = {
data: {
username: 'admin',
password: 'admin'
}
}
return request(app)
.post("/api/v1/login")
.send(creds)
.expect(200)
.then(res => {
expect(res.body).toMatchSnapshot()
})
并且这个测试通过了.... f**k me 伙计们.. 发生了什么事?
body 的语法看起来像 JSON,但您已将 body 的类型指定为“原始文本”。这会将您请求的 Content-type header 设置为“text/plain”,这可能会导致您的后端无法实际读取 body(因为它需要一个 JSON object).
只需从“文本”切换到“JSON”,将当前的 body 括在花括号中(这样您实际上发送的是单个 JSON object 并设置了数据 属性)并再次尝试发送请求。这次 content-type header 将正确设置为“application/json”,您的后端将成功读取数据。
如果您使用的是 Express 服务器,请尝试在路由前初始化 Express 应用程序后立即在服务器中解析您的 body
const app = express();
app.use(express.json());
在Postman的请求头配置中添加如下参数:
Content-Type: application/json
Content-Length
Content-Length的值是Postman在发送请求时自动计算的。这两个值都用于识别请求主体的媒体类型并准确解析它。丢失时,正文可能会被完全忽略(取决于服务器)。