使用 Postman 在 Heroku 上测试 Express POST
Testing Express POST on Heroku with Postman
问题:当我使用Postman 测试用户创建POST 端点时,出现以下任一错误。
- ”错误错误:列“test2”不存在
- “不能Post”
注意事项:
我能够使用 Postman
成功执行 GET 请求
Postman好像默认参数入口到URI?paramName=paramValue&...¶mNameN=paramvalueN
我看到的大多数快速文档都将参数传递为 URI/paramValue/.../paramValueN
我已经尝试了两种表示法,但仍然无法成功调用
Postman URIs attempted
[URI]/api/v1/users/test2@gmail.com/test/test
- 错误:“错误错误:列“test2”不存在
[URI]/api/v1/users?email=test2@gmail.com&firstName=test&lastName=test
- 错误:“无法 Post”
代码:
app.post('/api/v1/users/:email/:firstName/:lastName', async(req, res) => {
try {
const client = await pool.connect();
const result = await client.query(
`INSERT INTO users(id, email, first_name, last_name, created_date, last_session) VALUES (DEFAULT, ${req.params.email}, ${req.params.firstName}, ${req.params.lastName}, 'now()', 'now()') RETURNING *;`);
const results = { 'results': (result) ? result.rows : null};
res.json(results);
client.release();
} catch (err) {
console.error(err);
res.send("Error " + err);
}})
堆栈:
Node、Express、Postgres、Heroku(爱好计划)、Postman
问题出在解析传递给 URL 的参数上。我改为执行以下操作:
- 更改代码以使用 bodyParser 接受请求的正文
- 将请求中的参数存储在局部变量中
- 包括在 ${] 周围添加单引号 --> '${}'
我现在可以将 Body 的内容写入数据库。
const express = require('express');
const app = express();
app.use(express.json());
const { Pool } = require('pg');
const bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
const User = require('./userClass.js');
const pool = new Pool({
connectionString: process.env.DATABASE_URL,
ssl: {
rejectUnauthorized: false
}
});
/******* POST *******/
app.post('/api/v1/users', async(req, res) => {
let newUser = new User(req.body.email, req.body.firstName, req.body.lastName);
try {
const client = await pool.connect();
const result = await client.query(`INSERT INTO users(id, email, first_name, last_name, created_date, last_session) VALUES (DEFAULT, '${newUser.email}', '${newUser.firstName}', '${newUser.lastName}', 'now()', 'now()') RETURNING *;`);
const results = { 'results': (result) ? result.rows : null};
res.json(results);
client.release();
} catch (err) {
console.error(err);
res.send("Error " + err);
}
})
问题:当我使用Postman 测试用户创建POST 端点时,出现以下任一错误。
- ”错误错误:列“test2”不存在
- “不能Post”
注意事项:
我能够使用 Postman
成功执行 GET 请求Postman好像默认参数入口到URI?paramName=paramValue&...¶mNameN=paramvalueN
我看到的大多数快速文档都将参数传递为 URI/paramValue/.../paramValueN
我已经尝试了两种表示法,但仍然无法成功调用
Postman URIs attempted
[URI]/api/v1/users/test2@gmail.com/test/test
- 错误:“错误错误:列“test2”不存在
[URI]/api/v1/users?email=test2@gmail.com&firstName=test&lastName=test
- 错误:“无法 Post”
代码:
app.post('/api/v1/users/:email/:firstName/:lastName', async(req, res) => {
try {
const client = await pool.connect();
const result = await client.query(
`INSERT INTO users(id, email, first_name, last_name, created_date, last_session) VALUES (DEFAULT, ${req.params.email}, ${req.params.firstName}, ${req.params.lastName}, 'now()', 'now()') RETURNING *;`);
const results = { 'results': (result) ? result.rows : null};
res.json(results);
client.release();
} catch (err) {
console.error(err);
res.send("Error " + err);
}})
堆栈: Node、Express、Postgres、Heroku(爱好计划)、Postman
问题出在解析传递给 URL 的参数上。我改为执行以下操作:
- 更改代码以使用 bodyParser 接受请求的正文
- 将请求中的参数存储在局部变量中
- 包括在 ${] 周围添加单引号 --> '${}'
我现在可以将 Body 的内容写入数据库。
const express = require('express');
const app = express();
app.use(express.json());
const { Pool } = require('pg');
const bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
const User = require('./userClass.js');
const pool = new Pool({
connectionString: process.env.DATABASE_URL,
ssl: {
rejectUnauthorized: false
}
});
/******* POST *******/
app.post('/api/v1/users', async(req, res) => {
let newUser = new User(req.body.email, req.body.firstName, req.body.lastName);
try {
const client = await pool.connect();
const result = await client.query(`INSERT INTO users(id, email, first_name, last_name, created_date, last_session) VALUES (DEFAULT, '${newUser.email}', '${newUser.firstName}', '${newUser.lastName}', 'now()', 'now()') RETURNING *;`);
const results = { 'results': (result) ? result.rows : null};
res.json(results);
client.release();
} catch (err) {
console.error(err);
res.send("Error " + err);
}
})