Ich arbeite an einer Meteor-Anwendung, die in der Lage sein muss, POST-Anfragen von einer externen API zu hören. Um dies zu tun, versuche ich einen Webhook zu implementieren, bei dem die API Daten senden kann, die später in einer Sammlung gespeichert werden.Meteor-Routing-Problem: Webhook zurückkehrende HTML-Seite
Ich habe jedoch Probleme beim Konfigurieren der Route und POST eine grundlegende Kopfzeile und Nachricht.
Mein Code (in /lib/routes.js):
if(Meteor.isClient){
Router.route('/webhook', function(){
var request = this.request;
console.log("hook called");
console.log("headers: ", request.headers);
console.log("data: ", request.body);
this.response.writeHead(200, {'content-type': 'text/html'});
this.response.write("You wrote: " + request.body);
this.response.write("\n");
this.response.end('Success!\n');
}, {where: 'server'});
}
Meine Anfrage:
curl -H "Content-Type: application/json" -d '{"message":"foo"}' http://localhost:3000/webhook
Die Antwort, die ich in der Konsole ist eine große HTML-Seite, die nichts um mit der Anfrage zu tun ...
Irgendwelche Ideen, wo ich einen Fehler gemacht habe?
Vielen Dank im Voraus für Ihre Hilfe!
Greg
Hinweis: wenn ich den if(Meteor.isClient){...}
Teil entfernen, die ich erhalten:
Error: Meteor.userId can only be invoked in method calls. Use this.userId in publish functions.
Ich entfernte die Meteor.isClient Prüfung, und hatte immer noch den Fehler. Wenn ich diesen Weg nur beibehalten würde, würde es richtig funktionieren, wie du gesagt hast! Ich reparierte den ganzen Fräser, indem ich einen! Meteor.isServer Scheck zu allen Meteor.userId() Anrufen hinzufügte, die ich in meinem Fräser hatte, und es funktionierte tadellos! Danke für deine Einsicht, ich verstehe besser, wie das Ganze jetzt funktioniert. – Greg