【问题标题】:How can i get values of parameters using postman?如何使用邮递员获取参数值?
【发布时间】:2017-05-08 20:31:38
【问题描述】:

我正在研究 Node JS 和 PostgreSQL,并且正在使用它创建 REST Web 服务。我创建了一个 post 方法并通过 POSTMAN 调用 Web 服务,但无法在我的函数中获取参数值。 Web 服务在我的 PostgreSQL 表中插入空值。我正在使用 Visual Studio 2015 无法调试代码。我怎样才能做到这一点?

queries.js

var promise = require('bluebird');

var options = {
    // Initialization Options
    promiseLib: promise
};

var pgp = require('pg-promise')(options);
var connectionString = 'postgres://test:12345@localhost:8080/test';
var db = pgp(connectionString);


function getAllTask(req, res, next) {
    debugger;
    db.any('select * from tasklist')
        .then(function (data) {

            res.status(200)
                .json({
                    status: 'success',
                    message: 'Retrieved ALL puppies',
                    data: data

                });
        })
        .catch(function (err) {
            return next(err);
        });
}


function addTask(req, res, next) {
    debugger;
    //var task_name = req.param('task_name');
    //var task_type = req.param('task_type');
    var task_name = req.body.task_name;
    var task_type = req.body.task_type;
    console.log(req.body);
    db.func('inserttask', [task_name, task_type])
        .then(function () {
            res.status(200)
                .json({
                    status: 'success',
                    message: 'Inserted one task'
                });
        })
        .catch(function (err) {
            return next(err);
        });
}


module.exports = {
    getAllTask: getAllTask,
    addTask: addTask
};

index.js

var express = require('express');
var router = express.Router();
var db = require('../queries');

/* GET home page. */

router.get('/', function (req, res, next) {

  res.render('index', { title: 'Express' });
});

router.get('/api/tasklist', db.getAllTask);
router.post('/api/addtask', db.addTask);

module.exports = router;

server.js

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

var index = require('./routes/index');
var users = require('./routes/users');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

// uncomment after placing your favicon iblic
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', index);
app.use('/users', users);

// catch 404 and forward to error handler
app.use(function (req, res, next) {
    var err = new Error('Not Found');
    err.status = 404;
    next(err);
});

// error handler
app.use(function (err, req, res, next) {
    // set locals, only providing error in development
    res.locals.message = err.message;
    res.locals.error = req.app.get('env') === 'development' ? err : {};

    // render the error page
    res.status(err.status || 500);
    res.render('error');
});

module.exports = app;

【问题讨论】:

  • console.log(req.body) 看看你是否在身体里有任何东西,如果没有,然后检查你是否把东西正确地放在邮递员的身体部位。 req.body 为您提供存储在 body 中的元素。

标签: node.js postgresql visual-studio express


【解决方案1】:

我假设您已经在使用 express js 作为 node js 的框架。

首先你需要从 npm 安装 body-parser 模块:-

$ npm install body-parser --save

一旦你安装了 body-parser,在你定义了 app 变量之后添加以下代码:-

var bodyParser = require('body-parser');
app.use(bodyParser.json()); // to support json encoded bodies
app.use(bodyParser.urlencoded({ extended: true })); // to support encoded bodies

现在您可以通过 req.body.task_name 和 req.body.task_type 访问您的发布请求正文参数

希望它有效,如果我误解了您的问题,我很抱歉。

【讨论】:

  • 感谢悉达多的回复。我已经在我的代码中使用了它,但没有任何反应。如果我使用 get 方法,那么我会从像这样的参数中获取值 var task_name = req.param('task_name');但我未能在 post 方法中获取值。
  • 你用的是express js吗?你能分享你的服务器设置代码sn-p吗
  • 你写querys.js的方式不对,你应该把req,res对象传给addTask函数,然后就可以提取req.body了
【解决方案2】:

通过 POSTMAN 发送请求时,需要在 Headers 中添加 Content-Type: application/json。

【讨论】:

  • 感谢杰顿的回复。现在它给了我 SyntaxError: Unexpected token -。邮递员中的 400 错误请求
  • 在 Postman 中,在正文部分你的结构应该是这样的: { "task_name": "Test", "task_type": "Type" }
猜你喜欢
  • 1970-01-01
  • 2020-07-01
  • 2018-01-01
  • 2022-08-02
  • 2020-10-28
  • 2017-08-29
  • 2019-08-17
  • 1970-01-01
  • 2018-02-10
相关资源
最近更新 更多