Burada temel bir web sunucusu oluşturmak için .net nesnelerinden System.Net.HttpListener kullanıyorum. Bu nesne, tarayıcıda web sayfaları kodunu gösterme yeteneğine sahiptir.

Öncelikle html kodumuzu yazalım.
$url = ‘http://localhost:8080/' $htmlCode = @” <!DOCTYPE html> <html> <body> <h1>PowerShell Web Server</h1> <p>Example Web Server with Http Listener</p></br> <p>Resul COŞKUN</p> <p>resulcoskun.com.tr</p> </body> </html> “@
$htmlListener = New-Object System.Net.HttpListener $htmlListener.Prefixes.Add($url) $htmlListener.Start() $httpContext = $htmlListener.GetContext() $httpResponse = $httpContext.Response
Ardından gelen http isteklerinde html kodumuzu UTF-8 formatına dönüştürerek yayınlıyoruz. Sürekli hizmet veren web sayfaları için burada while döngüsü kullanabilirsiniz.
$buffer = [Text.Encoding]::UTF8.GetBytes($htmlCode) $httpResponse.ContentLength64 = $buffer.length $httpResponse.OutputStream.Write($buffer, 0, $buffer.length)
Son olarak servisi durdurmak için aşağıdaki komutu kullanabilirsiniz.
$httpResponse.Close() $htmlListener.Stop()

Özellikle HTML içeriğini UTF-8’e dönüştürüp ContentLength64 ayarlamanız, tarayıcıda karakter sorunu yaşamamanızı sağlıyor. Ayrıca while döngüsü ekleyerek sunucuyu sürekli açık tutmak, test ortamları için harika bir yöntem. Bu örnek, hızlı bir prototip oluşturmak isteyenler için çok pratik bir referans.
Ben de kısa bir test sunucusu kurmak için HttpListener kullandığımda, aynı yaklaşımla PowerShell içinde JSON yanıtları döndürmek çok pratik oldu. Sadece `$response.ContentType = “application/json”` ekleyip, `$json = ConvertTo-Json $obj` ile oluşturduğum veriyi aynı UTF‑8 buffer ile gönderiyorum. Bu sayede API prototiplerini hızlıca test edebildim ve kodunuzu genişletmek istediğinizde çok az ekleme yapmanız yeterli oluyor. Paylaştığınız örnek, bu tür hızlı çözümler için mükemmel bir başlangıç noktası!
Ben de benzer bir senaryoda PowerShell ile HttpListener kullanarak basit bir API uç noktası oluşturdum ve aynı yaklaşımı uyguladım; özellikle UTF-8 dönüşümünü manuel olarak ayarlamak, karakter kodlaması sorunlarını önlemede çok işe yaradı. Ayrıca, while döngüsü içinde birden fazla istek alındığında, her yanıtı ayrı bir thread’de işlemek performansı artırdı. Bu örnek, hızlı bir prototip geliştirmek isteyenler için harika bir başlangıç noktası!