-1

ノードに使用するライブラリに関係なく、それらはすべて絶対 URL を必要とします。

これは、フェッチ カリーを構築し、関数チェーンを介してそのフェッチを渡してリクエストを作成できるようにするか、本番環境か開発環境かを判断した後に定義される定数を作成し、その URL を更新する必要があることを意味します。私の環境が変わるたびに。

それにもかかわらず、ノードが URL のホスト名を必要とするのはなぜですか?

アプリ内の任意の場所 (ファンクション チェーンの奥深くを含む) でサーバー側の要求を行うよりシームレスな方法はありますか?

コード例:

node index.js
index.js
let app = Express();
app.use('ace', (req, res) => foo());
app.use('somedata.json', (req, res) => res.status(200).send('{"hello": "world"}'));

foo.js
() => bar();

bar.js
() => bat();

bat.js
() => fetch('/somedata.json').then(console.log);
4

1 に答える 1

1

相対 HTTP 要求などはありません。実際の HTTP 要求は、完全修飾 URL でなければなりません。それが HTTP 仕様です。HTTP はステートレスであるため、特定のホストに関連付けられた「ベース パス」の状態はありません。

相対リクエストはブラウザ タイプの環境に存在しますが、それはブラウザがリクエストを前処理し、絶対リクエストでない場合、ブラウザがデフォルトのベース パスを追加して絶対リクエストにするためです。ブラウザからサーバーへのすべてのリクエストは、実際には絶対 URL です。

ブラウザと同じことを行う独自の関数を作成できます。それにベースパスを設定し、リクエストに対して送信された URL をチェックするこの関数を介してすべてのリクエストを送信します。完全修飾パスでない場合は、ベースパスが追加されます。

解決しようとしている問題の実際のコード例を示していただければ、より具体的にお手伝いできます。開発環境または実稼働環境の場合は、通常、実行している環境の種類に関係なく、スタートアップ ベースでいくつかの変数を設定し、要求を形成するたびにコードでそれらの変数を使用するようにします。

于 2016-10-07T21:11:53.130 に答える