首页 > 解决方案 > 带有 2 个查询字符串参数的 Express POST 请求

问题描述

我正在尝试使用 express 和 node.js 编写我的 POST 请求(使用 node-fetch),但我不确定如何路由两个查询字符串变量。我已经构建了查询字符串,但我不知道如何在后端处理它。

应该发生什么:我正在创建一个待办事项列表应用程序。我有一个表格来创建一个新列表。它具有新列表名称的输入和列表的颜色。我只是希望能够发布该数据并将其放入我的 oracle 数据库中。

这是我的路线:

app.post('/api/add-list/:name&:color', api.addList);

这是我的 add-list.js 文件:

// Use to simplify require statements
global.__root = __dirname; 
console.log(__dirname);

// DB Setup
var config = require('../config.js');
var db = require('../lib/db-lib.js');



exports.post = function(req, res) {

     console.log("adding list");

     db.auth(config.DB);

     // This is not right, I know
     var args = getQueryVariable();

     let name = req.body.name;
     let color = req.body.color;

     var args = {name:name, color:color};

     db.proc('hu_mgr.zrptodo.p_add_lists', args, function(err, rows) { return 
          res.json(rows); });
}

这是我在尝试提交新列表后遇到的错误。

POST http://192.168.56.101:5000/api/add-list/name=Andrew&color=purple 500(内部服务器错误)

标签: javascriptnode.jsexpress

解决方案


嗨 Andrew 虽然您没有说出来,但我假设您想为您的应用程序创建一个 REST API。使用 REST API,URL 通常基于名词,而不是动词,因为 HTTP 方法将指定动作/动词。因此,/api/add-list您将 POST 到 ,而不是 POST 到/api/lists.

此外,在进行 POST 时,将数据作为请求正文的一部分而不是 URL 发送更为常见。

至于您收到的错误,您并没有向我们展示实际的错误,而只是向客户显示的错误。尝试在控制台中查看有关问题所在的更多详细信息。

此外,您可能会发现这个关于在 Oracle 数据库上创建 REST API 的系列很有用: https ://jsao.io/2018/03/creating-a-rest-api-with-node-js-and-oracle-database/


推荐阅读