💻
Orta
URL Router Simulation
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ı
- Path eşleştirme:
{id}placeholder'ı herhangi bir tek segment ile eşleşir (örn:/users/{id}→/users/42,/users/abc). - HTTP Status kodları:
GETbaşarılıysa →200POSTbaşarılıysa →201PUTbaşarılıysa →200DELETEbaşarılıysa →204
- Hata durumları:
- Path hiçbir route ile eşleşmezse →
404 Not Found - Path eşleşiyor ama method desteklenmiyorsa →
405 Method Not Allowed
- Path hiçbir route ile eşleşmezse →
- Path parametresi: Eşleşen route'ta
{id}varsa çıktıyaid=değerekleyin.
Çı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ı
İpucu 1: Path parametrelerini {id} gibi placeholder'larla eşleştirmek için regex kullanabilirsiniz: /users/\{id\} → /users/([^/]+)
İpucu 2: Önce path eşleşmesini kontrol edin, sonra metot eşleşmesini. Path eşleşiyor ama metot eşleşmiyorsa 405.
İpucu 3: POST başarılıysa 201, DELETE başarılıysa 204, GET/PUT başarılıysa 200 döndürün.
İpucu 4: Path parametresi varsa çıktıya "id=değer" ekleyin.
☕
Main.java
✓ Çözüm yüklendi
puan
Testleri çalıştırmak için kodunuzu gönderin
✅ Tüm testler geçti! Tebrikler!
Beklenen:
Sonuç:
Ln 1, Col 1
·
JAVA
·
UTF-8
Wandbox