← Kursa Dön
💻

URL Router Simulation

Orta
100 puan · Java

Basit bir HTTP request router simülasyonu yazın. Program stdin'den HTTP istek satırları okur (format: "METHOD /path"), kayıtlı route'lara göre eşleştirir ve uygun yanıtı üretir. Desteklenen metotlar: GET, POST, PUT, DELETE. Route eşleşmezse 404, metot desteklenmiyorsa 405 döndürülmelidir. Path parametreleri desteklenmelidir (örn: /users/{id}).

📋 Talimatlar

Professional REST API — URL Router Simulation

Bu ödevde basit bir HTTP request router simülasyonu yazacaksınız. Program önceden tanımlı route'ları kullanarak gelen istekleri eşleştirecek ve uygun HTTP yanıtını üretecektir.

Route Tablosu (Önceden Kayıtlı)

Method Path Handler
GET /users listUsers
GET /users/{id} getUser
POST /users createUser
PUT /users/{id} updateUser
DELETE /users/{id} deleteUser
GET /products listProducts
GET /products/{id} getProduct

Girdi Formatı

Her satır METHOD /path formatındadır. ---END--- satırı girdi sonunu belirtir.

Routing Kuralları

  1. Path eşleştirme: {id} placeholder'ı herhangi bir tek segment ile eşleşir (örn: /users/{id}/users/42, /users/abc).
  2. HTTP Status kodları:
    • GET başarılıysa → 200
    • POST başarılıysa → 201
    • PUT başarılıysa → 200
    • DELETE başarılıysa → 204
  3. Hata durumları:
    • Path hiçbir route ile eşleşmezse → 404 Not Found
    • Path eşleşiyor ama method desteklenmiyorsa → 405 Method Not Allowed
  4. Path parametresi: Eşleşen route'ta {id} varsa çıktıya id=değer ekleyin.

Çıktı Formatı

  • Başarılı: STATUS handlerName (parametre varsa: STATUS handlerName id=değer)
  • Hata: STATUS Hata Mesajı

İpuçları

  • Path parametrelerini eşleştirmek için {id} yerine regex ([^/]+) kullanabilirsiniz.
  • Önce tüm route'larda path eşleşmesini kontrol edin. Hiçbiri eşleşmezse 404. En az biri eşleşiyor ama method uyuşmuyorsa 405.
  • String.split(" ", 2) ile method ve path'i ayırın.

🧪 Örnek Test Senaryoları

Girdi
GET /users
POST /users
GET /users/42
PUT /users/7
DELETE /users/3
---END---
Beklenen Çıktı
200 listUsers
201 createUser
200 getUser id=42
200 updateUser id=7
204 deleteUser id=3
Girdi
GET /products
GET /products/99
GET /unknown
POST /products
---END---
Beklenen Çıktı
200 listProducts
200 getProduct id=99
404 Not Found
405 Method Not Allowed

💡 İpuçları

Main.java
✓ Çözüm yüklendi
puan

                    
Ln 1, Col 1 · JAVA · UTF-8
Wandbox