Daten senden mit fetch?
Hallo,
ich will mit der Fetch API Daten senden und abrufen. Aber wen ich dies tue, kommt ein Fehler:
POST http://127.0.0.1:5500/api net::ERR_ABORTED 405 (Method Not Allowed)
Ich weiß gar nicht, wie ich diesen Fehler beheben soll. Ich habe dazu auch nichts hilfreiches bis jetzt gefunden.
Mein Ziel ist es, Daten mit Javascript an einen Server (für den Anfang an localhost) zu senden und diese dann von einem weiteren localhost-Server abrufen.
Das ist meine Index.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<section id="control-center">
<button id="get-btn">Get Data</button>
<button id="post-btn" onclick="test()">Post Data</button>
<script>
function test(){
const data = {"name": "somename"}
const options = {
method: "POST",
headers: {'Content-Type': 'application/json'},
body: JSON.stringify(data)
}
fetch('/api', options)
}
</script>
</section>
</body>
</html>
Und das ist meine app.js:
const express = require('express')
const app = express()
app.listen(3000, () => console.log('3000'))
app.use(express.static('public'))
app.post('/api', (req, res) => {
console.log(req)
})
Wenn jemand eine bessere Methode hat, Daten an einen Server zu senden, dann würde ich diese auch mal gerne probieren.
1 Antwort
Deinen Angaben im Code zufolge soll dein Server auf Port 3000 lauschen. Als Antwort bekommst du jedoch einen Response von Port 5500. Das bedeutet, es muss irgendeinen Service geben, der sich dazwischenschaltet und den Port ändert.
Du startest die Node.js-Anwendung vermutlich nicht selbst, sondern nutzt irgendeine zusätzliche Software / irgendein IDE-Plugin o.ä. dafür. Nach ein wenig Recherche habe ich bspw. eine VSC-Extension (Live Server) gefunden, die als Standardport 5500 setzt. Schau in diesem Fall in deine Konfigurationsdateien (für die entspreche Software). Der Port sollte 3000 lauten.
Ich nutze schon den Liveserver aber was müsste ich bei 2 verschiedenen Ports dazwischen schalten?
Und würde es gehen wenn ich die Localstorage nutze?