Wie sendet man eine POST request mit javascript?
Ich versuche eine POST request mit javascript an discord zu versenden um eine Nachricht über discord zu versenden.
In Nodejs
2 Antworten
Vom Beitragsersteller als hilfreich ausgezeichnet
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Computer, programmieren, JavaScript
Klassisch mit Boardmitteln:
const https = require("https");
const data = JSON.stringify(/* your data object ... */);
const options = {
headers: {
"Content-Type": "application/json",
"Content-Length": data.length
},
hostname: "your target host name ...",
method: "POST",
path: "/your/url/path",
port: 443
}
const request = https.request(options, response => {
response.on("data", result => {
// do something with result ...
});
});
request.on("error", error => console.error(error));
request.write(data);
request.end();
Oder du nutzt ein zusätzliches Modul wie node-fetch.
import fetch from "node-fetch"; // ESM
const data = /* your data object ... */;
fetch("your target url ...", {
headers: { "Content-Type": "application/json" },
method: "POST",
body: JSON.stringify(data)
})
.then(response => response.json())
.then(result => { /* do something with result ...*/ });
In meinen beiden Beispielen werden die Daten stets als JSON verschickt und ein JSON-Response erwartet. Je nachdem, welches Datenformat bei dir Einsatz findet, musst du evt. noch Anpassungen vornehmen.
Mirko Marek
18.06.2022, 18:22
2
regex9
18.06.2022, 18:38
@ Mirko Marek
- Ein eigener Lösungsvorschlag zur Frage gehört in eine eigene Antwort. Darüber wird dann auch der Fragesteller informiert. Die Kommentarsektion ist der falsche Kontext.
- Sowohl die XHR API als auch FormData sind in Node.js unbekannt. Dafür müssten erst Module wie xmlhttprequest oder form-data installiert werden.
- Der Code beinhaltet verschiedene Fehler. Das Event heißt readyStateChange und readyState sollte mit der 4 (Status: Done) verglichen werden. Die Variable daten wiederum kann nicht wie eine Funktion eingesetzt werden. Richtig wäre:
daten.append('feld', 'meineDaten');
Mirko Marek
25.06.2022, 00:42
@regex9
Vielen dank regex9 für den Hinweis. Ich habe ausversehen "in NodeJS" übersehen und auch der kleine Syntaxfehler mit "readyStateChange" ist nicht schön. Zu 'readyState=4' ist mir leider auch ein Fehler passiert. Ich habe das zu schnell hier gepostet und zu schnell geschrieben.
const request = new XMLHttpRequest();
request.open("POST", "WEBHOOK HIER");
request.setRequestHeader('Content-type', 'application/json');
const params = {
username: "Customer: " + user,
avatar_url: "",
content: "Nachricht hier"
}
request.send(JSON.stringify(params));