Wie sendet man eine POST request mit javascript?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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
let xhr = new XMLHttpRequest();
let daten = new FormData();
daten('feld', 'meineDaten');
xhr.open('POST', 'zielURL');
xhr.addEventListener('reedyStateChange', () => {
 if(xhr.status==200&&xhr.readyState=4) {
    console.log("Übertragung erfolgreich");
  }
});
xhr.send(daten);
0
regex9  18.06.2022, 18:38
@ Mirko Marek
  1. 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.
  2. 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.
  3. 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');
0
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.

0
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));