Bir web uygulaması geliştirirken uygulamamıza farklı HTTP metodları ile istekte bulunulabilir, mesela GET, POST, PUT, DELETE gibi. Yapılan istek şekilleri ile farklı işlemler yapılmasını sağlayabiliriz. Mesela /users varış noktasına (end point) GET metodu ile bir istekte bulunduğunda üyelerin listesini gönderebileceğimiz gibi, POST metodu ile bu varış noktasına istekde bulunduğumuzda yeni bir kullanıcı oluşturmak isteyebiliriz. Aynı şekilde DELETE metodu ile buraya istekte bulunduğumuzda bir kullanıcının silinmesini isteyebiliriz.
Express JS ile uygulama geliştirirken, gelen istek GET metodu ile yapılmışsa geldiği gibi karşılayabiliriz.
app.get("/users", (req, res) => {
});
Fazladan bir işlem yapmamız gerekmiyor. Fakat eğer bir POST isteği yapılmış ise ve POST metodu ile ayrıca bazı veriler, mesela yeni kullanıcı oluşturmak için kullanıcı bilgileri gibi, gönderildi ise, Express JS bu bilgileri kendisi yakalayamaz. Bunun için iki farklı ara katman (middleware) fonksiyonun çalıştırılması gerekiyor.
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
express.urlencoded Nedir? Neden Kullanılır?
Express Js ile gelne bir middleware fonksiyonudur, POST ile gelen verileri bir nesneye dönüştürür ve ona request.body üzerinden ulaşmamızı sağlar.
Express v4.16.0 veriyonu ile birlikte kullanılmaya başlamıştır.
Gelen verilerin sadece string olarak ele alnıması istenirse, extended: false özelliği kullanılır, fakat eğer bir JSON nesnesi olarak ele alınması istenirse, extended: true parametresi ile kullanmak gerekir.
express.json Nedir? Neden Kullanılır?
Express Js ile gelne bir middleware fonksiyonudur, POST formları ile gönderilen verileri alarak onu JSON olarak ayrıştırır.
Express v4.16.0 veriyonu ile birlikte kullanılmaya başlamıştır.
Express JS İle Post Form Verilerine Nasıl Ulaşılır?
Express JS ile POST formlardan gönderilen verilere ulaşmak için öncelikle yukarıda tanıttığımız iki ara katman fonksiyonun çağrılması gereklidir.
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
Bu sayede bir form POST metodu ile gönderildiğinde request.body üzerinden form verilerine rahatlıkla ulaşabiliriz.
Mesela
<form action="/users" method="POST">
User name: <input type="text" name="userName" /> <br />
Email: <input type="email" name="userEmail" /> <br />
<button type="submit">Submit</button>
</form>
Şeklinde bir formumuz olsun, bu formdan gönderilen verilere ulaşmak için isteğin yapıldığı enpointte bir post karşılaşması yapıyoruz. Sonrasında istek (request) nesnesi üzerinde bulunan body nesnesinden form bilgilerine ulaşabiliyoruz. Form bilgilerine
app.post("/users", (req, res) => {
const userName = req.body.userName;
const userEmail = req.body.userEmail;
...
});
şeklinde ulaşılabilir. Burada req.body.userName ile, web sayfasında bulunan formun userName alanına işaret edilir. Mesela bir input etiketinde name değerinin userName olduğunu kabul edersek ona req.body.userName şeklinde ulaşabiliriz. Burada body, forma işaret eder.
**NOT : ** Express v4.16.0 öncesindeki Express 4.0 – 4.15 sürümlerinde express.urlencoded ve express.json middleware fonksiyonları kullanılmıyordu. Bunun için body-parser paketi kullanılıyordu.
Sonuç
Express JS ile POST verilerine kolaylıkla erişebiliriz, bunun için iki farklı express middleware fonksiyonunu kullanmamız gereklidir.
Sorularınız mı var? Yorumlardan bize yazın.
