2

シナリオ: 次のコードを検討してください。

var querystring = require('querystring');
var ParamsWithValue = querystring.parse(req._url.query);

次に、クエリ文字列の値を読み取ることができます。
例: 要求された文字列がhttp://www.website.com/Service.aspx?UID=Trans001&FacebookID=ae67ea324の場合、それぞれコード&
でクエリ文字列の値を取得できます。ParamsWithValue.UIDParamsWithValue.FacebookID

問題:上記と同じ方法で渡された任意の数のパラメーターの値を取得できます。しかし、2 回目以降は、ブラウザーの応答で次のエラーが表示されます。

エラー:

{"code":"InternalError","message":"Cannot read property 'query' of undefined"}

質問: URL からクエリ文字列を読み取るアプローチのどこが間違っていますか?

:フレームワークを使用して解析したくありません。組み込みモジュールのみに依存しようとしています。


更新: いずれかのパラメータの値を変更すると、正しく応答します。ただし、同じ値が別のブラウザーから再度要求された場合でも、同じエラーがスローされます。

4

1 に答える 1

7
  1. req._url ではなく req.url が必要だと思います。

  2. req.url は文字列です。URI インスタンスが必要な場合は、require('url').parse(req.url) を使用します。

  3. したがって、最終的には次のようになります。

    var ParamsWithValue = querystring.parse(require('url').parse(req.url).query);

編集: ポイント 1、最後の req.url のタイプミスを修正しました -> req._url

于 2013-04-09T08:47:30.303 に答える