Body parser
- Node.js kursu
- Orta seviye
- Ders 34/116
- 5 dk
express.json() ile body parser middleware öğrenirsin.
Body parser: express.json()
express.json() Express'e yerleşik bir body parser middleware'ıdır. Gelen JSON gövdeleri otomatik ayrıştırır ve req.body'ye koyar. Kullanım: app.use(express.json());.
Bu middleware kaydedildikten sonra, POST rotalarında req.body ile ayrıştırılan JSON verisine erişilir. Örnek: app.post("/data", (req, res) => { res.json({ alindi: req.body.ad }); });. İstemci { "ad": "Ayşe" } gönderirse req.body.ad "Ayşe" olur. express.json() kaydedilmezse req.body undefined kalır. Bu yüzden body parser, app.post rotalarından önce kaydedilmelidir.
req.body ile veri okuma
express.json() kaydedildikten sonra, her POST isteğinin gövdesi req.body'de ayrıştırılmış JSON olarak bulunur. Örnek: istemci { "ad": "Ayşe", "yas": 30 } gönderirse, req.body.ad "Ayşe" ve req.body.yas 30 olur.
Bu, API'lerde veri almanın temel yoludur. İstemci Content-Type: application/json başlığıyla JSON gönderir; Express express.json() ile bunu ayrıştırır. Yanıtta res.json(veri) kullanırsan Express otomatik olarak Content-Type: application/json başlığını ekler ve nesneyi JSON'a çevirir. Böylece istek ve yanıt aynı biçimde JSON olarak akar.
Uygulama Body parser ile POST rotası yaz
app.use(express.json()) ile body parser ekle. app.post("/data", (req, res) => { res.json({ alindi: req.body.ad }); }) rotası ekle. İstemci { ad: "Ayşe" } gönderir. Sunucu kendiliğinden kapanır.
Başlangıç kodu
const express = require("express");
const app = express();
// JSON ayrıştırıcı middleware ekle
// POST rotasında istek gövdesinden veri oku, yanıtla
// 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 express.json çağrısını tamamla
app.use(express.____());
app.use(express.json());
Açıklama: express.json() JSON gövdeleri ayrıştırır.
2 Parçayı rolüne eşle
| Kavram | Anlamı |
|---|---|
express.json() |
JSON gövde ayrıştırır |
req.body |
Ayrıştırılmış veri |
app.post |
POST rotası tanımlar |
res.json() |
JSON yanıt gönderir |
3 express.json() ne yapar?
app.use(express.json())- HTML şablonu render eder
- JSON gövdeleri req.body'ye ayrıştırır Doğru cevap
- Statik dosya sunar
- URL yönlendirir
Açıklama: express.json() JSON gövdeleri ayrıştırır.