app.post
- Node.js kursu
- Orta seviye
- Ders 27/116
- 5 dk
app.post ile POST rotası tanımlamayı öğrenirsin.
app.post
app.post(yol, handler) bir POST rotası tanımlar. app.get gibi çalışır ama POST isteklerini dinler. POST, genellikle veri göndermek (form, API) için kullanılır.
POST isteğinin gövdesini (body) okumak için req.body kullanırsın. Ama Express varsayılan olarak gövdeyi ayrıştırmaz; app.use(express.json()) ile JSON ara katmanını eklemen gerekir. Örnek: app.post("/data", (req, res) => { res.json({ alindi: req.body.ad }); });. Burada req.body.ad ile gönderilen ad değerini alırsın. res.json bir nesneyi JSON yanıtı olarak gönderir; içerik türü otomatik application/json olur.
req.body ve express.json()
POST isteğinin gövdesi req.body ile okunur. Ama Express bunu varsayılan olarak ayrıştırmaz. JSON gövdesi için app.use(express.json()) ara katmanını eklersin.
Örnek: app.use(express.json()); app.post("/data", (req, res) => { console.log(req.body); res.json({ alindi: req.body.ad }); });. İstemci { "ad": "Ayşe" } gönderdiğinde req.body.ad Ayşe olur. express.json() ara katmanı, gelen JSON dizesini bir nesneye çevirip req.body'ye koyar. Bu olmadan req.body undefined olur. Ara katman (middleware), istek ve rota arasında çalışan bir fonksiyondur.
Uygulama POST rotası tanımla
express içe aktar ve app oluştur. app.use(express.json()) ile JSON ara katmanını ekle. app.post("/data", (req, res) => res.json({ alindi: req.body.ad })) ile POST rotası tanımla. Altındaki hazır kod sunucuyu başlatır ve { ad: "Ayşe" } gövdesiyle POST isteği atar.
Başlangıç kodu
// express içe aktar, app oluştur ve JSON ara katmanını ekle
// buraya yaz
// "/data" rotasına POST ile gelen adı al ve yanıt ver
// buraya yaz
const server = app.listen(3000, () => {
const http = require("http");
const opts = { hostname: "localhost", port: 3000, path: "/data", method: "POST", headers: { "Content-Type": "application/json" } };
const r = http.request(opts, (res) => {
let body = "";
res.on("data", (c) => body += c);
res.on("end", () => { console.log("Yanıt: " + body); server.close(); });
});
r.write(JSON.stringify({ ad: "Ayşe" }));
r.end();
});Örnek çözüm
const express = require("express");
const app = express();
app.use(express.json());
app.post("/data", (req, res) => { res.json({ alindi: req.body.ad }); });
const server = app.listen(3000, () => {
const http = require("http");
const opts = { hostname: "localhost", port: 3000, path: "/data", method: "POST", headers: { "Content-Type": "application/json" } };
const r = http.request(opts, (res) => {
let body = "";
res.on("data", (c) => body += c);
res.on("end", () => { console.log("Yanıt: " + body); server.close(); });
});
r.write(JSON.stringify({ ad: "Ayşe" }));
r.end();
});Beklenen çıktı
Yanıt: {"alindi":"Ayşe"}
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 app.post ne için kullanılır?
app.post("/data", handler)- GET isteklerini dinler
- Sunucuyu kapatır
- POST isteklerini dinler Doğru cevap
- Modülü yükler
Açıklama: app.post POST isteklerini dinler.
2 Parçayı rolüne eşle
| Kavram | Anlamı |
|---|---|
app.post |
POST rotası tanımlar |
req.body |
Gövdeyi okur |
express.json() |
Gövdeyi ayrıştırır |
res.json |
JSON yanıtı gönderir |
3 req.body erişimini tamamla
res.json({ alindi: req.____.ad });
res.json({ alindi: req.body.ad });
Açıklama: req.body ile gövdeye erişilir.