Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 将URL中不存在的参数发送到API_Reactjs_Api_Request - Fatal编程技术网

Reactjs 将URL中不存在的参数发送到API

Reactjs 将URL中不存在的参数发送到API,reactjs,api,request,Reactjs,Api,Request,我使用advancedFetch向我的API发送请求。这是可行的,但是,我想知道是否可以发送一个参数而不在URL中定义它。有什么聪明的方法可以做到这一点吗 我试着研究它,但我不确定我在尝试做什么时使用了正确的关键字 这是我设置请求的地方(该值来自模式输入字段): 在我的控制器中,我定义了路由并实现了如下功能: index.create = (req, res, next) => { let userName = req.params.userName; c

我使用advancedFetch向我的API发送请求。这是可行的,但是,我想知道是否可以发送一个参数而不在URL中定义它。有什么聪明的方法可以做到这一点吗

我试着研究它,但我不确定我在尝试做什么时使用了正确的关键字

这是我设置请求的地方(该值来自模式输入字段):

在我的控制器中,我定义了路由并实现了如下功能:

index.create = (req, res, next) => {
        let userName = req.params.userName;

        console.log(userName);

        user
            .create(userName)
            .then((response) => {
                res.send(response);
            })
            .catch((err) => {
                next(err);
            });
    };

router.post('/users', index.create);
然后在my service.js中,我将数据写入数据库:

create: function(userName){
            userName = userName

            return query(`INSERT INTO ${tableName} (user) VALUES (?, ?)`, [1, userName])
                .catch(err => {
                    app.logger.error('[Users] failed to create a user', err.message);
                    return Promise.reject(new Error('failed to create user'));
                });
        },

我总是得到一个未定义的用户名,我是否必须在末尾创建一个带有值的路由?

您收到的用户名是未定义的,因为您发送的请求是JSON编码的数据,而不是URL参数,同样的逻辑不适用于这种情况

幸运的是,有一个简单的方法来解决您的问题,使用。它很容易使用

以下是初始化它的方式:

var express = require('express')
var bodyParser = require('body-parser')

var app = express()

// parse application/json
app.use(bodyParser.json())
这是您在路由器功能中读取“用户名”的方式:

index.create = (req, res, next) => {
        let userName = req.body.userName;

        console.log(userName);

        user
            .create(userName)
            .then((response) => {
                res.send(response);
            })
            .catch((err) => {
                next(err);
            });
    };
顺便说一句,当您调用advancedFetch时,您实际上应该这样做:

body: JSON.stringify({newUserName: userName}),

是的,您实际上可以这样做:

在前端调用中,您可以像这样通过主体发送参数

body: JSON.stringify({userName: userName})
然后在控制器中,您要做的是直接从主体访问参数:

let userName = req.body.userName;
现在它不再是未定义的:)

let userName = req.body.userName;