Expressを使用して別のノードモジュールでPOSTリクエストを実行する

ご飯

POSTリクエストを処理してから別のサーバーにPOSTリクエストを実行し、返された情報に基づいてユーザーをリダイレクトするWebアプリケーションを構築しています。

最終結果は、ユーザーがユーザー名を入力し、[送信]をクリックします->アプリケーションが投稿を処理し、ユーザー名を取得します->アプリケーションがユーザー名を含む外部サーバーに投稿を実行します->サーバーがユーザーが存在するサーバーのURLを返します- ->アプリケーションはユーザーをそのアプリケーションにリダイレクトします。

server.js

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var findUser = require('./findUserInstance')

// Create application/x-www-form-urlencoded parser
var urlencodedParser = bodyParser.urlencoded({ extended: false })

app.use(express.static('public'));

app.get('/index.htm', function (req, res) {
    res.sendFile( __dirname + "/" + "index.htm" );
})

app.post('/process_post', urlencodedParser, function (req, res) {

    // Prepare output in JSON format
    response = {
        username:req.body.username
    };
    var uUrl = findUser.url(response.username);
    console.log("redirecting to " + uUrl);
    res.redirect(findUser.url(response.username));
    res.end(JSON.stringify(response));
})

var server = app.listen(8081, function () {

    var host = server.address().address
    var port = server.address().port

    console.log("App listening at http://%s:%s", host, port)

})

findUserInstance.js

exports.url = function(uName) {

    var http = require("https");
    var uUrl;

    var options = {
        "method": "POST",
        "hostname": "removed",
        "port": null,
        "path": "removed",
        "headers": {
            "appkey": "removed",
            "content-type": "application/json",
            "cache-control": "no-cache",
            "Accept": "application/json",
            "postman-token": "7d87bcf1-8e11-9717-2f6e-8150a5625acd"
        }
    };

    var req = http.request(options, function (res) {
        var chunks = [];

        res.on("data", function (chunk) {
            chunks.push(chunk);
        });

        res.on("end", function () {
            var body = Buffer.concat(chunks);
            var jsoncontent = JSON.parse(body);
            uUrl = jsoncontent.rows[0].url;
            console.log("The following should be: user.instance.url.com)
            console.log(jsoncontent.rows[0].url);
            return uUrl; //The information that I want to return to server.js
        });
    });

    req.write(JSON.stringify({username: uName}));
    req.end();
}

問題は、リダイレクトを実行できるように、外部のpostモジュールからserver.jsモジュールに情報を返すことです。現在、関数から変数uUrl(投稿からのURLが正しく入力されています)が返されています。ただし、findUserInstanceモジュールはnullを返します。

findUserInstanceモジュールからserver.jsモジュールにuUrlの値を取得するにはどうすればよいですか?

ジュール・グーリー

@bryan euton良い応答あなたはpromiseのようなfindUserInstanceのオブジェクトを返す必要があります!https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise

exports.url = function(uName) {
  return new Promise( function (resolve, reject){

    var http = require("https");
    var uUrl;

    var options = {
      "method": "POST",
      "hostname": "removed",
      "port": null,
      "path": "removed",
      "headers": {
        "appkey": "removed",
        "content-type": "application/json",
        "cache-control": "no-cache",
        "Accept": "application/json",
        "postman-token": "7d87bcf1-8e11-9717-2f6e-8150a5625acd"
      }
    };

    var req = http.request(options, function (res) {
      var chunks = [];

      res.on("data", function (chunk) {
        chunks.push(chunk);
      });

      res.on("end", function () {
        var body = Buffer.concat(chunks);
        var jsoncontent = JSON.parse(body);
        uUrl = jsoncontent.rows[0].url;
        console.log("The following should be: user.instance.url.com)
        console.log(jsoncontent.rows[0].url);
        resolve(uUrl); //The information resolve promise with your datas
      });

    });

    req.write(JSON.stringify({username: uName}));
    req.end();

  });

}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ノード:httpsモジュールを使用してリクエストをページ分割する方法は?

分類Dev

npmリクエストモジュールを使用して、現在Postmanで機能しているノードをどのように機能させますか?

分類Dev

ノードのリクエストモジュールを使用して、RESTAPIを介してファイルをアップロードする

分類Dev

タイプスクリプトでモジュール解決を実行してノードに出力するにはどうすればよいですか?

分類Dev

Pythonのサブプロセスモジュールを使用して、コマンドライン入力でluaスクリプトを実行する

分類Dev

マージされていないプルリクエストでノードモジュールをマージして維持する

分類Dev

ノードリクエストモジュール:XMLをJSONとして解析する

分類Dev

ES6モジュールで新しい実験ノードのEventTargetクラスを使用する

分類Dev

シェルコマンドがPOSTリクエストごとに1回ではなく複数回トリガーされる理由。nodejsとsimple-sshノードモジュールを使用しています

分類Dev

node.jsのリクエストモジュールを使用する場合のPOSTリクエストステータスコード(500)。PostmanのPOSTリクエストは正常に機能しています

分類Dev

カスタムモジュールを使用してNetSuiteスクリプトを作成するときに、「定義コールバックの実行中にすべてのSuiteScriptAPIモジュールを使用できません」を取得する

分類Dev

スケジューラーを使用してノードjsスクリプトを自動的に実行するにはどうすればよいですか?

分類Dev

Nodejs ExpressでPOSTリクエストが実行される直前に、このajax POSTリクエストがデータを使用してGETリクエストを実行するのはなぜですか?

分類Dev

リクエストモジュールを使用してPythonでJSONファイルのコンテンツをRESTFULAPIにPOSTする方法

分類Dev

特定のモジュールを使用してRからperlスクリプトを実行するにはどうすればよいですか?

分類Dev

promise-mysqlを使用してNode / Expressの他のモジュールで使用するためにMySQL接続をエクスポートしますか?

分類Dev

ansible変数を使用してスクリプトモジュールを実行する

分類Dev

nodejsのリクエストモジュールを使用して削除リクエストでフォームデータとヘッダーを送信する方法

分類Dev

ある一連のコードから移動し、別のモジュールで別のコードを実行し、ステップバックする方法

分類Dev

リクエストモジュールPythonを使用してURLを作成する

分類Dev

APIからのノードリクエストデータ、データを配列にプッシュします。次に、その新しい配列を使用して別のリクエストを実行します

分類Dev

lsmodはエラーを出します:WSLで実行されているDebianで「モジュールのリストを取得できませんでした」

分類Dev

Python で defer モジュールを使用して一連のタスクを非同期で実行する

分類Dev

ヒアドキュメントを使用して別のユーザーとしてスクリプトでコマンドを実行する

分類Dev

ゲスト実行可能ファイルでノードモジュールを実行します

分類Dev

モジュールノードのようなjavascriptクラスをwebpackを使用してelectronにエクスポート/インポートします

分類Dev

sim800モジュールのATコマンドでPOSTリクエストを送信する方法は?

分類Dev

Pythonのスレッドモジュールを使用して同時httpリクエストを処理するにはどうすればよいですか?

分類Dev

フェニックスエリクサーチャットアプリの監視ツリーでRedixを実行し、別のモジュールからアクセスするにはどうすればよいですか?

Related 関連記事

  1. 1

    ノード:httpsモジュールを使用してリクエストをページ分割する方法は?

  2. 2

    npmリクエストモジュールを使用して、現在Postmanで機能しているノードをどのように機能させますか?

  3. 3

    ノードのリクエストモジュールを使用して、RESTAPIを介してファイルをアップロードする

  4. 4

    タイプスクリプトでモジュール解決を実行してノードに出力するにはどうすればよいですか?

  5. 5

    Pythonのサブプロセスモジュールを使用して、コマンドライン入力でluaスクリプトを実行する

  6. 6

    マージされていないプルリクエストでノードモジュールをマージして維持する

  7. 7

    ノードリクエストモジュール:XMLをJSONとして解析する

  8. 8

    ES6モジュールで新しい実験ノードのEventTargetクラスを使用する

  9. 9

    シェルコマンドがPOSTリクエストごとに1回ではなく複数回トリガーされる理由。nodejsとsimple-sshノードモジュールを使用しています

  10. 10

    node.jsのリクエストモジュールを使用する場合のPOSTリクエストステータスコード(500)。PostmanのPOSTリクエストは正常に機能しています

  11. 11

    カスタムモジュールを使用してNetSuiteスクリプトを作成するときに、「定義コールバックの実行中にすべてのSuiteScriptAPIモジュールを使用できません」を取得する

  12. 12

    スケジューラーを使用してノードjsスクリプトを自動的に実行するにはどうすればよいですか?

  13. 13

    Nodejs ExpressでPOSTリクエストが実行される直前に、このajax POSTリクエストがデータを使用してGETリクエストを実行するのはなぜですか?

  14. 14

    リクエストモジュールを使用してPythonでJSONファイルのコンテンツをRESTFULAPIにPOSTする方法

  15. 15

    特定のモジュールを使用してRからperlスクリプトを実行するにはどうすればよいですか?

  16. 16

    promise-mysqlを使用してNode / Expressの他のモジュールで使用するためにMySQL接続をエクスポートしますか?

  17. 17

    ansible変数を使用してスクリプトモジュールを実行する

  18. 18

    nodejsのリクエストモジュールを使用して削除リクエストでフォームデータとヘッダーを送信する方法

  19. 19

    ある一連のコードから移動し、別のモジュールで別のコードを実行し、ステップバックする方法

  20. 20

    リクエストモジュールPythonを使用してURLを作成する

  21. 21

    APIからのノードリクエストデータ、データを配列にプッシュします。次に、その新しい配列を使用して別のリクエストを実行します

  22. 22

    lsmodはエラーを出します:WSLで実行されているDebianで「モジュールのリストを取得できませんでした」

  23. 23

    Python で defer モジュールを使用して一連のタスクを非同期で実行する

  24. 24

    ヒアドキュメントを使用して別のユーザーとしてスクリプトでコマンドを実行する

  25. 25

    ゲスト実行可能ファイルでノードモジュールを実行します

  26. 26

    モジュールノードのようなjavascriptクラスをwebpackを使用してelectronにエクスポート/インポートします

  27. 27

    sim800モジュールのATコマンドでPOSTリクエストを送信する方法は?

  28. 28

    Pythonのスレッドモジュールを使用して同時httpリクエストを処理するにはどうすればよいですか?

  29. 29

    フェニックスエリクサーチャットアプリの監視ツリーでRedixを実行し、別のモジュールからアクセスするにはどうすればよいですか?

ホットタグ

アーカイブ