2017-12-11 8 views
1

Gibt es eine Möglichkeit, die vollständige Anforderungs-URL einschließlich des Abfragezeichenfolgeteils in einer Azure Functions-HTTP-Trigger-JavaScript-Funktion abzurufen?Azure-Funktionen: Abrufen der vollständigen Anforderungs-URL einschließlich Abfragezeichenfolge in einer HTTP-Triggerfunktion

Die Parameter req (und context.req) enthalten die URL ohne die Abfragezeichenfolge in req.url und die Abfragezeichenfolge als Schlüssel/Wert-Paare in req.query. Aber soweit ich sehen kann, ist es nicht möglich, direkt auf die vollständige Anfrage-URL zuzugreifen. Es ist auch unmöglich, die vollständige URL nur mit der Basis-URL und dem Schlüsselwertobjekt zu rekonstruieren.

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

wird in

gedreht
{ 
    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' 
    } 
} 

Zugriff auf die vollständige URL zu haben ist erforderlich für eine Proxy-Aufbau, eine URL Shortener etc. Und da gibt es kein offizielles Format für Abfrage Strings, nur Konventionen, es wäre schön, in der Lage zu sein, alle Arten von Abfrage-Strings nur für den Fall zu behandeln.

Antwort

2

Basierend auf docs, sollten Sie in der Lage sein, es von req.originalUrl zu bekommen:

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

UPDATE von Kommentaren: offenbar, das noch nicht auf 2.0 Runtime funktionieren, werden aber schließlich unterstützt: issue.

+0

Danke Mikhail! Leider req.originalUrl enthält nicht die Abfragezeichenfolge, nur die Basis-URL (wie req.url). – jarsta

+0

Es tut, ich lief meine Funktion und bekam 'https: //myapp.azurewebsites.net/api/HttpTriggerJS1? Code = mycode & test = test2' im Log – Mikhail

+0

Interessant. Welche Version der Laufzeit verwenden Sie? Dies kann entweder ein Problem mit der 2.x-Laufzeitumgebung oder der macOS-CLI-Umgebung sein. Habe gerade eine neue App und Funktion zum Testen erstellt und die Abfragezeichenfolge ist definitiv nicht in req.originalUrl enthalten. Danke, dass du mich in die richtige Richtung gelenkt hast! – jarsta

Verwandte Themen