Ich benutze die Node-Rest-Client-Bibliothek, um meine Rest-API aufzurufen, auf der eine Python-Flashin-App auf einem Testserver ausgeführt wird. Der Knoten Setup- und Anfragecode ist unten.Standardauthentifizierung funktioniert nicht im Node-Rest-Client-Knoten
Wenn ich einen Benutzer Token an den Request-Header es Worte in Ordnung, aber in dem Ruf fügen Sie die Benutzer-Token mit grundlegender auth meines Python-System Authentifizierung erfolgreich zu erhalten, und das Token mit einem 200-Status zurückkehrt, aber der Kolben-Server dann ändere dies zu einer 400 schlechten Anfrage. Es funktioniert gut, den Anruf mit Postman zu machen.
Fehlt etwas in meinen beiden Konfigurationsobjekten für node-rest-client?
Prost.
var options_auth = {
user: "bob",
password: "password",
mimetypes: {
json: ["application/json", "application/json;charset=utf-8"]
}
};
var Client = require('node-rest-client').Client;
var client = new Client(options_auth);
var method = "/authtoken";
var args = {
headers: {
"Content-Type": "application/json",
"api-key": "asf89a7assa98d7sd98d98ds",
//"token": "dsf98s7dsf98dsf7sd98f7dsf",
"Accept": "application/json"
},
responseConfig: {
timeout: 1000 //response timeout
}
};
client.get(Api.url+method, args, function (data, response) {
// parsed response body as js object
// raw response
//console.log(response);
if(Buffer.isBuffer(data)){
data = data.toString('utf8');
}
console.log(data);
var stringData = data.toString('utf8');
console.log("String data = "+stringData);
}).on('error', function (err) {
console.error('Something went wrong with the http client', err);
});
Auch entdeckte diese Unterschiede zwischen den Request-Header vom Server empfangen:
// Node Request fails: 400
'headers': EnvironHeaders([
('Authorization', u'Basic XXXXXXXXXXXXXX=='),
('Vga-Api-Key', u'xxxxxxxxxxxxxxxxxxxxxxxx'),
('Content-Length', u'0'),
('Connection', u'close'),
('Host', u'127.0.0.1:8080'),
('Accept', u'*/*'),
('Content-Type', u'application/json')]),
// Postman Request works: 200
'headers': EnvironHeaders([
('Authorization', u'Basic XXXXXXXXXXXXXX=='),
('Vga-Api-Key', u'xxxxxxxxxxxxxxxxxxxxxxxx'),
* ('Content-Length', u''),
* ('Connection', u'keep-alive'),
('Host', u'127.0.0.1:8080'),
* ('Cache-Control', u'no-cache'),
('Accept', u'*/*'),
('Content-Type', u''),
* ('Accept-Encoding', u'gzip, deflate')]),
Hallo, nein, ich übergebe nichts in der Anfrage Körper also nicht JSON auf der Flasche Seite extrahieren. Eigentlich habe ich gerade den Inhalt hinzugefügt, um das Problem zu beheben :-) – Jon
Eigentlich habe ich gerade eine Version bekommen, indem ich einige Aktionen auf der Kolbenseite entfernt habe, die für jetzt unnötig waren, und es hat funktioniert - ich habe eine andere Funktion ausprobiert, die den Benutzer extrahiert Daten und es hat gut funktioniert. Also vielleicht war es eine Art Timing-Problem? Es ist komisch und vielleicht werde ich wieder auf dieses Problem stoßen, aber für den Moment funktioniert es. Ich würde nicht sagen, dass ich es gelöst hatte, ich habe das Problem vorerst nur beiseite geschoben. Außerdem bin ich neu bei Node, aber ich sehe keinen großen Gewinn bei der Verwendung von Node-Rest-Client gegenüber dem Standard-HTTP-Client. – Jon
@Jon: Was hast du entfernt? – mhawke