Node.js — Bölüm 1 : Basit Bir Sucunu

Emeltemakcay
riseconsulting
Published in
3 min readAug 31, 2023

By Volkan Suner, Burak Karayakalı, Kazım Fırat Sucuk, Nuri Kon, Hidayet Can Özcan

Dijital çağın hızla ilerlediği günümüzde, web sunucularının arkasında yatan teknoloji ve mimari, birçok modern uygulamanın temel taşını oluşturmaktadır. Bu mimari yapıların içerisinde, Node.js gibi platformlar, performansları, esnek yapıları ve geniş kullanım alanlarıyla öne çıkarlar. Bu yazıda, Node.js platformunu daha yakından tanımak ve bu platform üzerinde nasıl etkili bir web sunucusu oluşturabileceğinizi göstermek amacıyla derinlemesine bir inceleme yapacağız.

İlk adımda, Node.js’in ‘http’ modülünün nasıl kullanılacağını göreceksiniz. Bu modül, HTTP protokolüne dayanarak bir web sunucusu oluşturmanızı sağlar. İşte bu temel sunucu oluşturma sürecini gösteren kod:

const http = require(‘http’);
const port = 5000;
const host = ‘localhost’;
const server = http.createServer();
server.on(‘request’, (req,res) => {
res.writeHead(200, {‘Content-Type’: ‘text-plain’});
res.end(‘Merhaba dostum, orada mısın?’);
});
server.listen(port,host,()=>console.log(`[Sunucu] => Dinlenen port: ${port}`));

Bu kod, temel bir sunucunun nasıl oluşturulacağını gösteriyor. Ancak, bu kodun içerdiği potansiyelin farkında olmak önemlidir. Burada, ‘http’ modülü sayesinde, isteklere nasıl yanıt verileceğini tanımlayan bir sunucu örneği oluşturduk.

Daha sonra, bu sunucunun, gelen HTTP isteklerini nasıl işleyeceğini daha detaylı bir şekilde ele alalım. Gelen isteğin URL, metod ve header bilgilerini nasıl alabileceğimizi gösteren kod şu şekildedir:

const http = require(‘http’);
const _url = require(‘url’);
const port = 5000;
const host = ‘localhost’;
const server = http.createServer();
server.on(‘request’, (req,res) => {
const { url, method: _method, headers } = req;
const parsedUrl = _url.parse(url, true);
const path = parsedUrl.pathname.replace(/^\/+|\/+$/g, "");
const queryString = parsedUrl.query;
const method = _method.toLowerCase();
res.writeHead(200, {‘Content-Type’: ‘text-plain’});
res.end(`[Server] => Request coming for ${path} with ${method} method`);
});
server.listen(port,host,()=>console.log(`[Sunucu] => Dinlenen port: ${port}`));

Bu kod parçası, gelen isteğin ayrıntılarını nasıl çözümleyeceğimizi ve sunucuya nasıl yanıt verilmesi gerektiğini daha detaylı bir şekilde gösterir. Gelen isteğin URL ve metod bilgilerini almak, sunucunun daha etkili bir yanıt üretmesine yardımcı olur.

Son olarak, sunucunun gelen veriyi nasıl işleyeceğini ele alalım. Bu süreç, gelen isteğin içeriğini çözümlemek için oldukça kritiktir. Gelen veriyi çözümleme ve işleme sürecini gösteren kod ise şu şekildedir:

const http = require(‘http’);
const _url = require(‘url’);
const stringDecoder = require("string_decoder");
const port = 5000;
const host = ‘localhost’;
const server = http.createServer();
server.on(‘request’, (req,res) => {
const { url, method: _method, headers } = req;
const parsedUrl = _url.parse(url, true);
const path = parsedUrl.pathname.replace(/^\/+|\/+$/g, "");
const queryString = parsedUrl.query;
const method = _method.toLowerCase();
const decoder = new stringDecoder.StringDecoder("utf-8");
let buffer = "";
req.on("data", (data) => {
buffer += decoder.write(data);
});
req.on("end", () => {
buffer += decoder.end();
console.log(`[Sunucu] => ${path} yolu için ${method} metodlu istek geldi.`, { ...queryString }, `Başlıklar: `, headers, `Yük: `, buffer);
});
res.writeHead(200, {‘Content-Type’: ‘text-plain’});
res.end(`[Server] => Request coming for ${path} with ${method} method`);
});
server.listen(port,host,()=>console.log(`[Sunucu] => Dinlenen port: ${port}`));

Bu son kod parçası, sunucuya gelen veriyi nasıl işleyeceğimizi ve bu veriyi nasıl kullanabileceğimizi gösterir. Özellikle büyük veri akışlarında, bu tür bir veri işleme süreci son derece kritiktir.

Bu yazıda, Node.js ile nasıl etkili bir sunucu oluşturulacağına dair temel bilgileri ele aldık. İlerleyen yazılarda, bu bilgileri temel alarak sunucunun daha da geliştirilmesi ve optimize edilmesi süreçlerini detaylıca inceleyeceğiz.

Bu yazı Rise Technology Orion Team tarafından hazırlanmıştır.

--

--