2017-12-11 11 views
1

Azure関数HTTPトリガーJavascript関数内で、クエリ文字列部分を含む完全な要求URLを取得する方法はありますか?Azure関数:HTTPトリガー関数でクエリ文字列を含む完全な要求URLを取得します。

req(およびcontext.req)パラメータには、req.urlにクエリ文字列を含まないurlと、req.queryにkey-valueペアとしてクエリ文字列を含めることができます。しかし、私が見る限り、完全なリクエストURLに直接アクセスすることはできません。ベースURLとKey-Valueオブジェクトだけで完全なURLを再構築することも不可能です。

http://foo.azurewebsites.net/api/bar/baz?a=1&&&b=2&c=&d===5&e=&f=6&g

のようなものがいっぱいのリクエストURLへのアクセスを持つ

{ 
    url: '/bar/baz/', 
    query: { 
     a: '1', 
     b: '2', 
     c: '\n\u0001d\u0012\u0003==5', 
     e: '\n\u0001f\u0012\u00016', 
     g: '\n\u0001a\u0012\u0003\n\u00011' 
    } 
} 

になってますたとえばなど、URL短縮サービスをプロキシを構築するために必要とのための公式フォーマットが存在しないのでれますクエリ文字列、慣習のみ、すべての種類のクエリ文字列を扱うことができればうれしいでしょう。 docsに基づいて

答えて

2

、あなたはreq.originalUrlからそれを得ることができる必要があります:コメントから

module.exports = function (context, req) { 
    context.log('HTTP trigger function processed a request: ' + req.originalUrl); 
    context.done(); 
}; 

はUPDATE:どうやら、これはまだ2.0ランタイム上では動作しませんが、最終的にはサポートされます:issue

+0

ありがとうMikhail! req.originalUrlにはクエリ文字列が含まれておらず、ベースURL(req.urlと同じ)だけが含まれています。 – jarsta

+0

それは、私の機能を実行し、ログに 'https://myapp.azurewebsites.net/api/HttpTriggerJS1?code = mycode&test = test2'を得ました – Mikhail

+0

面白いです。ランタイムのどのバージョンを使用していますか?これは、2.xランタイムまたはmacOS CLI環境の問題である可能性があります。テストする新しいアプリと関数を作成しただけで、クエリ文字列はreq.originalUrlには含まれていません。しかし、正しい方向に私を操縦してくれてありがとう! – jarsta

関連する問題