javascript - 使用 Node 和 ejs 时调用外部 api 端点并获取用户的详细信息

标签 javascript node.js forms api ejs

我有一个注册和登录表单,正在使用 ejs 呈现为 View , 我已经获得了一些要调用的 api 端点,并且我已将它们添加到其 ejs 表单操作 View 中 当我在 ejs View 表单中填写用户详细信息时,我收到此响应。

我在尝试注册用户时收到此消息

    {
      "status": 200,
      "message": "Account created successfully.",
      "data": {
        "name": "name of user",
        "email": "user email",
        "password": "$2b$10$0IPgBNCJhjjkasdkGb2y0CviOuxRe/bAfhFqFDqrofMaCz5f0SMtwkgBxIzm"
      }
    }

我在尝试登录注册用户时收到此消息

{
  "status": 200,
  "message": "Account logged in successfully.",
  "data": [
    {
      "id": 9,
      "name": "username",
      "email": "useremail@gmail.com",
      "password": "$2b$10$v3/zhn0pP6BMaTlfcoaMUuMlaHPGht6v2sf03e6uB3OPIQ3ggdpdi",
      "date_created": "2020-02-21T13:15:33.000Z"
    }
  ]
}

当我发布包含已注册用户详细信息的登录表单时,我得到了此消息

    {
      "status": 400,
      "message": "Provided email address already exists, try another",
      "data": null
    }

当我尝试使用错误的凭据登录时,我收到此消息

    {
      "status": 400,
      "message": "Incorrect password provided, try again.",
      "data": null
    }

请问我的问题是如何访问这些详细信息,以便我可以在我的 ejs View 中将它们发送给客户

最佳答案

您可以使用 npm 包请求,因此您可以使用此安装它 我请求 npm 现在您将需要一个函数,每当您想要使用 api 端点时都将调用该函数


    var request = require("request");

    module.exports = {

        // DATA IN { name: 'aaa', email: 'pass@gmail.com', password: '123' } FORMAT
        callAPI:function(url, data, callback){

            var options = { method: 'POST',
            url: url,
            headers: 
            {
                'cache-control': 'no-cache',
                'content-type': 'application/json'
            },
            body: data,
            json: true };

            request(options, function (error, response, result) {
            if (error){
                return callback(error);
            }else{
                callback(null, result);  
            };

            });

        }

    }

您可以以此为例来调用该函数


    app.post('/signup', function (req, res) {
            var data = {
                "name": req.body.name,
                "email": req.body.email,
                "password": req.body.password
            }

            functions.callAPI("https://api/endpoin/signup", data, function (error, result) {
                if (error) {
                    var response = {
                        "status": 400,
                        "message": error,
                        "data": null
                    }
                    res.render('signup', {response: response});
                } else {
                    var response = result;
                    if (response.status === 400) {
                        res.render('signup', {response: response});
                    } else {
                        res.redirect('/login');
                    }
                }
            });


        });

关于javascript - 使用 Node 和 ejs 时调用外部 api 端点并获取用户的详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60340027/

相关文章:

javascript - 如果在 div 内使用开始滚动,如何添加类?

javascript - jQuery - 在自定义函数中使用 $(this)

Javascript 不等待使用 bootstrap-wizard.js 的 ajax

javascript - 在 javascript 函数中对数据库执行 php 插入

javascript - Next.js 带有 IP 地址的 api 路由

php - 如何在从数据库回显的同一个while循环中选择多个单选按钮

node.js - 如何在 Mongoose 的对象数组中查找和删除特定对象

javascript - Express 服务器不提供静态文件

javascript - 返回表单会产生一个单独的 div 标记

javascript - 提交表单而不点击更新或提交按钮