簡體   English   中英

如何在節點repl中獲取請求

[英]how to get a request in node repl

我已經開始構建一個 typescript 庫(打算在服務器端使用),現在我正在嘗試使用節點 repl 來玩弄我的代碼,看看在某些情況下會發生什么......我已經構建並需要該文件,但現在我遇到了一個問題:我有一個 function 需要一個 http 請求(來自 express.js 的請求類型),我想嘗試在 repl 中運行它,為它提供一個我之前從瀏覽器發出的請求的副本。 這可行嗎? 我想也許我可以通過以下方式做到這一點:

  • 對導出為 cURL 或
  • 將請求發送到節點,但是在 repl 中我將如何接收它?

我不確定我是否了解您的用例,但您可以嘗試以下方法:

在某些臨時文件夾類型中:

npm install "request-promise"

然后從同一個臨時文件夾中,輸入 REPL 並鍵入:

(async () => {const response = await require("request-promise").get("https://cnn.com"); console.log(response)})()

此示例用於get ,但可以輕松更改為其他 HTTP 方法。

我找到了一種相當簡單的方法來做我想做的事......它涉及快速設置一個基本的快速服務器(按照本教程設置):

mkdir scratch && cd scratch && npm init

(選擇除入口點 app.js 之外的默認值)

npm i express

創建一個包含以下內容的 app.js ( vi app.js ):

var express = require('express');
var app = express();
var circ = {};
circ.circ = circ;
var cache = [];
app.get('/', function (req, res) {
  res.send(JSON.stringify(req, (key, value) => {
  if (typeof value === 'object' && value !== null) {
    // Duplicate reference found, discard key
    if (cache.includes(value)) return;

    // Store value in our collection
    cache.push(value);
  }
  return value;
}));
});
app.listen(3000, function () {
  console.log('Example app listening on port 3000!');
});

(請參閱JSON.stringify自定義JSON.stringifyJSON.stringify的第二個參數的答案)。 您可以選擇使用flatted代替,這是我后來發現的,而且肯定更好。

現在執行以下操作:

  1. 使用node app.js運行應用程序
  2. 在您的瀏覽器中,導航到您想要的請求發布到的網站。
  3. 打開您的瀏覽器開發工具( Ctrl + shift + c對我有用)。
  4. Go 到網絡選項卡。
  5. 找到您感興趣的請求並右鍵單擊它。
  6. 單擊復制 > 復制為 curl(或類似名稱,具體取決於您使用的瀏覽器)。
  7. Run that curl request, but change the url it's posted to to 127.0.0.1:3000 (eg change curl 'example.com' \...etc to curl '127.0.0.1:3000' \...etc

您現在應該在標准 output 作為 JSON object 上獲得該請求,並且它采用 express 通常處理的格式。 是的,現在,pipe 將其放入剪貼板(可能是xclip -selection c在 Linux 上)或者甚至更好,將其重定向到文件。

...

第2步 -? 第 3 步 - 利潤:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM