WEB / ARTIFACT LAB
Bir kaydın ne söylediğini bul.
HTTP öğretim metni, URL, Cookie, Set-Cookie ve JSON alanlarını incele. Kaydı düzenle, ayrıştır ve bir alan seç; metin bu tarayıcıda veri olarak işlenir.
Bir kaydı alanlarından oku.
HTTP, URL, Cookie veya JSON kaydında hangi alanın ne söylediğini bul.
- Örneği seç
İncelenen örnek listesinden HTTP response veya URL gibi bir kayıt seç. İlk ayrıştırmada çıkan alan adlarını ve değerlerini oku.
- Bir alanın anlamını aç
Bir alan düğmesine bas; değerini, kayıttaki yolunu ve açıklamasını birlikte incele. Sonraki alanlar ile kaydın kalanına geç.
- Değişikliği karşılaştır
Ham metni düzenle bölümünü aç; örneğin URL query değerini değiştir ve Metni ayrıştır’a bas. Önceki değerle karşılaştır; Örneğe dön ile ilk kaydı geri getir.
Bir alanın kayıtta bulunması ile o alanın bir sistem davranışını kanıtlamasını ayırırsın; değiştirdiğin metnin hangi alanı değiştirdiğini gösterebilirsin.
ÖRNEĞİ BİRLİKTE OKUYALIM
İki HTTP sonucu ve local işlem izi
Bir alan seç; hangi sonucu desteklediğini ve nerede yetersiz kaldığını incele.
Ham kaydı ve alan açıklamalarını oku
{
"representation": "HTTP/1.1 teaching text, CRLF-delimited; selected headers only",
"storageTransport": "in-process-call, seeded memory",
"exchanges": [
{
"case": "found",
"requestId": "demo-book-found",
"request": "GET /api/book?case=found HTTP/1.1\r\nHost: 127.0.0.1:4175\r\nAccept: application/json\r\n\r\n",
"response": "HTTP/1.1 200 OK\r\nContent-Type: application/json\r\nContent-Length: 53\r\nCache-Control: no-store\r\nX-Lab-Request-Id: demo-book-found\r\n\r\n{\"book\":{\"id\":\"book-atlas\",\"title\":\"Atlas Notları\"}}",
"bodyUtf8Bytes": 53,
"trace": [
{
"seq": 1,
"actor": "handler",
"event": "request-received",
"requestId": "demo-book-found"
},
{
"seq": 2,
"actor": "handler",
"event": "route-selected",
"route": "/api/book"
},
{
"seq": 3,
"actor": "storage-adapter",
"event": "local-lookup",
"transport": "in-process-call"
},
{
"seq": 4,
"actor": "storage-adapter",
"event": "record-found"
},
{
"seq": 5,
"actor": "handler",
"event": "response-created",
"status": 200
}
],
"browserExpected": {
"fetch": "fulfilled-with-Response",
"status": 200,
"ok": true,
"body": "await response.json()",
"view": "book-title"
}
},
{
"case": "missing",
"requestId": "demo-book-missing",
"request": "GET /api/book?case=missing HTTP/1.1\r\nHost: 127.0.0.1:4175\r\nAccept: application/json\r\n\r\n",
"response": "HTTP/1.1 404 Not Found\r\nContent-Type: application/json\r\nContent-Length: 26\r\nCache-Control: no-store\r\nX-Lab-Request-Id: demo-book-missing\r\n\r\n{\"error\":\"BOOK_NOT_FOUND\"}",
"bodyUtf8Bytes": 26,
"trace": [
{
"seq": 1,
"actor": "handler",
"event": "request-received",
"requestId": "demo-book-missing"
},
{
"seq": 2,
"actor": "handler",
"event": "route-selected",
"route": "/api/book"
},
{
"seq": 3,
"actor": "storage-adapter",
"event": "local-lookup",
"transport": "in-process-call"
},
{
"seq": 4,
"actor": "storage-adapter",
"event": "record-missing"
},
{
"seq": 5,
"actor": "handler",
"event": "response-created",
"status": 404
}
],
"browserExpected": {
"fetch": "fulfilled-with-Response",
"status": 404,
"ok": false,
"body": "await response.json()",
"view": "not-found-message"
}
}
]
}- request / response
- HTTP/1.1 öğretim gösterimi; DevTools raw capture değil. Headers/body boş CRLF satırıyla ayrılır.
- Content-Length / bodyUtf8Bytes
- Body octet sayısı; compression uygulanmaz. Unicode karakter sayısından farklı olabilir.
- X-Lab-Request-Id / requestId
- Bu örneğin özel correlation alanı; HTTP standardı değil.
- trace[].actor / event / transport
- Server-side processing ve local storage adapter çağrısı; network protocol kaydı değil.
- browserExpected
- HTTP Response, body read ve view için beklenen ayrı sonuçlar.
Sentetik selected-header gösterimi; tam RFC-compliant server transcript veya lab output iddiası yok. Tarih/diğer browser headers’ı atlanır. HTTP/2–3 framing, streaming packetization, DNS/TLS ve real persistence modellenmez. Header’ın adı gerçek lab uygulamasında farklıysa o uygulamanın sözleşmesi esas alınır.
URL · path, query ve fragment
https://books.example:8443/catalog/atlas?lang=tr&tag=network&tag=web#summary- host
- Host, açık port ile books.example:8443 olur. Hostname ise books.example olarak kalır.
- origin
- HTTP(S) origin scheme, hostname ve etkin port’tan oluşur; path veya query bu sınırı değiştirmez.
- tag
- Query aynı tag adını iki kez içerir. İki alan da korunur; tek bir get sonucu bütün değerleri temsil etmez.
- hash
- Fragment #summary URL’de bulunur; HTTP request target’ına eklenmez.
- httpOriginForm
- Path ve query birlikte gösterilir. Fragment’in bu değerde bulunmamasını karşılaştır.
Sentetik öğretim metni. Ayrıştırma URL alanlarını veya cookie çiftlerini gösterir; browser policy, storage ya da server session sonucunu üretmez.
Cookie · request’te gönderilen çiftler
hd_language=tr; hd_view=compact- hd_language
- Gönderilen dil tercihi. Bu name/value çifti kimlik veya kitap erişim izni değildir.
- hd_view
- İkinci preference çifti. Request Cookie metni Path, HttpOnly veya SameSite attribute’larını geri taşımaz.
Sentetik öğretim metni. Ayrıştırma URL alanlarını veya cookie çiftlerini gösterir; browser policy, storage ya da server session sonucunu üretmez.
Set-Cookie · response’taki tercih ve scope
hd_language=tr; Path=/- hd_language
- Response yeni bir dil tercihi önerir. Metni okumak browser’ın bunu kabul edip sakladığını kanıtlamaz.
- Path
- Request path eşleşmesi için scope attribute’ı. Request Cookie çiftlerine dahil edilmez; güvenlik izolasyonu sağlamaz.
Sentetik öğretim metni. Ayrıştırma URL alanlarını veya cookie çiftlerini gösterir; browser policy, storage ya da server session sonucunu üretmez.