[{"data":1,"prerenderedAt":25},["ShallowReactive",2],{"article-rest-api-nedir-endpoint-http-metotlari-json":3,"article-related-rest-api-nedir-endpoint-http-metotlari-json":24},{"articleId":4,"title":5,"slug":6,"content":7,"summary":8,"featuredImage":9,"metaTitle":5,"metaDescription":10,"metaKeywords":11,"isPublished":12,"publishedAt":13,"references":14,"authors":14,"viewCount":15,"likeCount":15,"commentCount":15,"readingTime":16,"authorId":17,"categoryId":18,"categoryName":19,"tags":20,"isActive":12,"isDeleted":21,"createDate":22,"updatedDate":23,"deletedDate":14,"createdUserId":17,"updatedUserId":17,"deletedUserId":14},"915879bf-e92c-4f49-9acd-be70747999e1","REST API Nedir? Endpoint, HTTP Metotları, JSON ve Token","rest-api-nedir-endpoint-http-metotlari-json","\u003Ch2>API Neyi Çözüyor?\u003C/h2>\n\u003Cp>Bir mobil uygulama, bir web arayüzü ve bir muhasebe sistemi aynı veriye ihtiyaç duyduğunda, her biri için ayrı bir veri erişim katmanı yazmak sürdürülebilir değildir. Kural bir yerde değişince üç yeri birden güncellemeniz gerekir — ve biri mutlaka unutulur.\u003C/p>\n\u003Cp>API, veriyi ve iş kurallarını tek bir yerde toplayıp dışarıya standart bir arayüzle sunar. İstemcilerin hangi teknolojiyle yazıldığı önemsiz hale gelir. REST ise bu arayüzü HTTP'nin kendi kavramları üzerine kurma yaklaşımıdır: kaynaklar, adresler ve metotlar.\u003C/p>\n\n\u003Ch2>Kaynak ve Endpoint Tasarımı\u003C/h2>\n\u003Cp>REST'te her şey bir kaynaktır ve kaynaklar \u003Cstrong>isimlerle\u003C/strong> temsil edilir, fiillerle değil. Fiili adres değil, HTTP metodu belirler.\u003C/p>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\u003Cth>Yanlış\u003C/th>\u003Cth>Doğru\u003C/th>\u003Cth>Neden\u003C/th>\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\u003Ctd>\u003Ccode>GET /kullaniciGetir?id=5\u003C/code>\u003C/td>\u003Ctd>\u003Ccode>GET /kullanicilar/5\u003C/code>\u003C/td>\u003Ctd>Fiil metotta, kaynak adreste\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>\u003Ccode>POST /kullaniciSil\u003C/code>\u003C/td>\u003Ctd>\u003Ccode>DELETE /kullanicilar/5\u003C/code>\u003C/td>\u003Ctd>Silme işlemi DELETE'tir\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>\u003Ccode>GET /kullanici/5/siparisGetir\u003C/code>\u003C/td>\u003Ctd>\u003Ccode>GET /kullanicilar/5/siparisler\u003C/code>\u003C/td>\u003Ctd>Hiyerarşi adreste görünür\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>\u003Ccode>GET /tumKullanicilar\u003C/code>\u003C/td>\u003Ctd>\u003Ccode>GET /kullanicilar?sayfa=2&amp;adet=20\u003C/code>\u003C/td>\u003Ctd>Sayfalama olmadan liste büyür\u003C/td>\u003C/tr>\n\u003C/tbody>\n\u003C/table>\n\u003Cp>Çoğul isim kullanmak ve hiyerarşiyi adreste göstermek okunabilirliği belirgin biçimde artırır. Ancak hiyerarşiyi ikiden fazla seviyeye taşımamak gerekir: \u003Ccode>/kullanicilar/5/siparisler/12/kalemler/3\u003C/code> yerine \u003Ccode>/siparis-kalemleri/3\u003C/code> hem daha kısa hem daha esnektir.\u003C/p>\n\u003Cp>\u003Cstrong>Liste uçları her zaman sayfalanmalıdır.\u003C/strong> Bugün 40 kayıt döndüren bir uç, iki yıl sonra 40.000 kayıt döndürür ve o gün hem sunucu hem istemci tarafında sorun çıkarır.\u003C/p>\n\n\u003Ch2>HTTP Metotları ve Anlamları\u003C/h2>\n\u003Cp>Bu anlamlara sadık kalmak yalnızca estetik bir tercih değildir; önbellekleme, yeniden deneme ve ara katman davranışları bu sözleşmeye göre çalışır.\u003C/p>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\u003Cth>Metot\u003C/th>\u003Cth>Ne yapar\u003C/th>\u003Cth>Güvenli\u003C/th>\u003Cth>Tekrarlanabilir\u003C/th>\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\u003Ctd>GET\u003C/td>\u003Ctd>Okur, durumu değiştirmez\u003C/td>\u003Ctd>Evet\u003C/td>\u003Ctd>Evet\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>POST\u003C/td>\u003Ctd>Yeni kayıt oluşturur\u003C/td>\u003Ctd>Hayır\u003C/td>\u003Ctd>Hayır\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>PUT\u003C/td>\u003Ctd>Kaydı bütünüyle değiştirir\u003C/td>\u003Ctd>Hayır\u003C/td>\u003Ctd>Evet\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>PATCH\u003C/td>\u003Ctd>Kaydın bir kısmını günceller\u003C/td>\u003Ctd>Hayır\u003C/td>\u003Ctd>Genelde evet\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>DELETE\u003C/td>\u003Ctd>Siler\u003C/td>\u003Ctd>Hayır\u003C/td>\u003Ctd>Evet\u003C/td>\u003C/tr>\n\u003C/tbody>\n\u003C/table>\n\u003Cp>\"Tekrarlanabilir\" sütunu pratikte kritiktir: ağ koptuğunda istemci isteği yeniden gönderir. PUT'u iki kez göndermek zararsızdır, POST'u iki kez göndermek \u003Cstrong>iki sipariş\u003C/strong> demektir. Ödeme gibi kritik uçlarda bu yüzden istemciden bir \u003Cem>idempotency key\u003C/em> alıp aynı anahtarla gelen ikinci isteği yok saymak gerekir.\u003C/p>\n\n\u003Ch2>Durum Kodları: Sessiz Ama Kritik\u003C/h2>\n\u003Cp>Her cevabı 200 döndürüp hatayı gövdeye yazmak yaygın bir kestirme yoldur ve istemci tarafında karmaşaya yol açar: istemci artık her cevabın gövdesini ayrıştırmadan başarılı olup olmadığını bilemez.\u003C/p>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\u003Cth>Kod\u003C/th>\u003Cth>Anlamı\u003C/th>\u003Cth>İstemci ne yapmalı\u003C/th>\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\u003Ctd>200 OK\u003C/td>\u003Ctd>Başarılı\u003C/td>\u003Ctd>Veriyi kullan\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>201 Created\u003C/td>\u003Ctd>Kayıt oluşturuldu\u003C/td>\u003Ctd>\u003Ccode>Location\u003C/code> başlığını oku\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>204 No Content\u003C/td>\u003Ctd>Başarılı, gövde yok\u003C/td>\u003Ctd>Gövde ayrıştırma\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>400 Bad Request\u003C/td>\u003Ctd>İstek geçersiz\u003C/td>\u003Ctd>Kullanıcıya alan hatalarını göster\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>401 Unauthorized\u003C/td>\u003Ctd>Kimlik doğrulanmadı\u003C/td>\u003Ctd>Giriş ekranına yönlendir\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>403 Forbidden\u003C/td>\u003Ctd>Kimlik var, yetki yok\u003C/td>\u003Ctd>\"Yetkiniz yok\" mesajı\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>404 Not Found\u003C/td>\u003Ctd>Kaynak yok\u003C/td>\u003Ctd>Boş durum göster\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>409 Conflict\u003C/td>\u003Ctd>Çakışma (mükerrer kayıt)\u003C/td>\u003Ctd>Kullanıcıya sebebi söyle\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>422\u003C/td>\u003Ctd>Biçim doğru, iş kuralı ihlali\u003C/td>\u003Ctd>Kural mesajını göster\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>429\u003C/td>\u003Ctd>Çok fazla istek\u003C/td>\u003Ctd>\u003Ccode>Retry-After\u003C/code> kadar bekle\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>500\u003C/td>\u003Ctd>Sunucu hatası\u003C/td>\u003Ctd>Genel hata, tekrar dene\u003C/td>\u003C/tr>\n\u003C/tbody>\n\u003C/table>\n\u003Cp>401 ile 403 arasındaki farkı doğru kullanmak, istemcinin kullanıcıya doğru mesajı göstermesini sağlar: biri \"giriş yap\" der, diğeri \"yetkin yok\". Karıştırıldığında kullanıcı, yetkisi olmadığı bir sayfada sonsuz döngüde oturum açmaya çalışır.\u003C/p>\n\n\u003Ch2>Tutarlı Cevap Zarfı\u003C/h2>\n\u003Cp>Bir endpoint düz metin, diğeri nesne, bir başkası hata durumunda bambaşka bir yapı döndürdüğünde istemci kodu hızla karmaşıklaşır. Tüm cevapları ortak bir zarf içinde döndürmek, istemci tarafında tek bir işleme kuralı yazmayı mümkün kılar.\u003C/p>\n\u003Cpre>\u003Ccode>// Başarılı\n{\n  \"isSuccess\": true,\n  \"data\": { \"id\": 42, \"ad\": \"Ayşe Yılmaz\", \"eposta\": \"ayse@ornek.com\" },\n  \"message\": null,\n  \"errors\": []\n}\n\n// Doğrulama hatası — HTTP 400 ile birlikte\n{\n  \"isSuccess\": false,\n  \"data\": null,\n  \"message\": \"Doğrulama hatası\",\n  \"errors\": [\n    { \"field\": \"eposta\", \"code\": \"INVALID_FORMAT\", \"message\": \"Geçerli bir e-posta girin\" },\n    { \"field\": \"yas\",    \"code\": \"OUT_OF_RANGE\",   \"message\": \"Yaş 18'den küçük olamaz\" }\n  ]\n}\u003C/code>\u003C/pre>\n\u003Cp>Hata nesnesinde \u003Ccode>field\u003C/code> ve \u003Ccode>code\u003C/code> alanlarının bulunması iki şeyi mümkün kılar: arayüz hatayı doğru form alanının altında gösterebilir, ve istemci mesajın metnine değil \u003Cstrong>koduna\u003C/strong> göre karar verebilir. Mesaj metnine dayanan istemci kodu, çeviri eklendiği gün kırılır.\u003C/p>\n\u003Cp>Bu yaklaşımı kendi projelerimizde \u003Ccode>OperationResult\u003C/code> deseniyle uyguluyoruz; hem başarı hem hata aynı biçimde dönüyor.\u003C/p>\n\n\u003Ch2>Filtreleme, Sıralama ve Alan Seçimi\u003C/h2>\n\u003Cp>Liste uçları pratikte hiçbir zaman \"hepsini getir\"den ibaret kalmaz. İstemci filtrelemek, sıralamak ve bazen yalnızca birkaç alanı istemek ister. Bunları her uç için ayrı ayrı icat etmek yerine tek bir sözleşmeye oturtmak gerekir.\u003C/p>\n\u003Cpre>\u003Ccode>GET /api/v1/siparisler\n      ?durum=beklemede,onaylandi     # çoklu değer virgülle\n      &amp;olusturma_min=2026-01-01      # aralık: _min / _max\n      &amp;olusturma_max=2026-06-30\n      &amp;ara=yilmaz                    # serbest metin araması\n      &amp;sirala=-olusturmaTarihi,tutar  # başındaki \"-\" azalan demek\n      &amp;alanlar=id,tutar,durum         # yalnızca gerekli alanlar\n      &amp;sayfa=2&amp;adet=20\u003C/code>\u003C/pre>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\u003Cth>Kural\u003C/th>\u003Cth>Neden\u003C/th>\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\u003Ctd>Sıralama alanları beyaz listeden\u003C/td>\u003Ctd>Rastgele sütun adı kabul etmek SQL enjeksiyonuna ve index'siz sorguya kapı açar\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>\u003Ccode>adet\u003C/code> için üst sınır\u003C/td>\u003Ctd>\u003Ccode>adet=1000000\u003C/code> tek istekle sunucuyu düşürebilir\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>Toplam sayı da dönsün\u003C/td>\u003Ctd>İstemci sayfa sayısını hesaplayabilsin\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>Varsayılan sıralama sabit olsun\u003C/td>\u003Ctd>Sırasız sorguda aynı kayıt iki sayfada birden çıkabilir\u003C/td>\u003C/tr>\n\u003C/tbody>\n\u003C/table>\n\u003Cp>Son madde sessiz bir hata kaynağıdır: veritabanı, açık bir \u003Ccode>ORDER BY\u003C/code> olmadan satır sırasını garanti etmez. Sayfalama yapan her sorgunun \u003Cstrong>benzersiz bir alanla\u003C/strong> (en azından ikincil olarak \u003Ccode>id\u003C/code> ile) sıralanması gerekir.\u003C/p>\n\n\u003Ch2>Kimlik Doğrulama ve Token\u003C/h2>\n\u003Cp>Sunucunun her istekte kullanıcıyı yeniden tanıması gerekir. Token tabanlı yaklaşımda kullanıcı bir kez giriş yapar ve karşılığında imzalı bir token alır. Sonraki isteklerde bu token \u003Ccode>Authorization\u003C/code> başlığında taşınır; sunucu imzayı doğrular, oturum bilgisini bellekte tutmak zorunda kalmaz.\u003C/p>\n\u003Cpre>\u003Ccode>GET /api/v1/siparisler?sayfa=1&amp;adet=20 HTTP/1.1\nHost: api.ornek.com\nAuthorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\nAccept: application/json\u003C/code>\u003C/pre>\n\u003Cp>Bir JWT üç bölümden oluşur ve \u003Cstrong>orta bölümü şifreli değildir, yalnızca kodlanmıştır\u003C/strong> — herkes okuyabilir. İmza içeriğin değiştirilmediğini garanti eder, gizliliğini değil. Bu yüzden token'ın içine parola, TC kimlik numarası gibi hassas veri konmaz.\u003C/p>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\u003Cth>Konu\u003C/th>\u003Cth>Doğru yaklaşım\u003C/th>\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\u003Ctd>Erişim token'ı süresi\u003C/td>\u003Ctd>Kısa: 15 dakika – birkaç saat\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>Yenileme (refresh) token'ı\u003C/td>\u003Ctd>Uzun ömürlü, sunucuda iptal edilebilir\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>Saklama yeri\u003C/td>\u003Ctd>\u003Ccode>HttpOnly\u003C/code> çerez tercih edilir; \u003Ccode>localStorage\u003C/code> XSS'e açıktır\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>İçerik\u003C/td>\u003Ctd>Kullanıcı kimliği ve roller — hassas veri yok\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>Taşıma\u003C/td>\u003Ctd>Yalnızca HTTPS üzerinden\u003C/td>\u003C/tr>\n\u003C/tbody>\n\u003C/table>\n\u003Cp>Süresiz token, çalındığında sınırsız erişim demektir. Kısa ömürlü erişim token'ı + iptal edilebilir yenileme token'ı ikilisi, bu riski yönetilebilir bir pencereye indirir.\u003C/p>\n\n\u003Ch2>Sürümleme ve Belgeleme\u003C/h2>\n\u003Cp>Yayına çıkmış bir API'nin sözleşmesini bozmak, ona bağlı tüm istemcileri kırar. Burada ayrım nettir: \u003Cem>ekleme\u003C/em> kırıcı değildir, \u003Cem>çıkarma ve değiştirme\u003C/em> kırıcıdır.\u003C/p>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\u003Cth>Değişiklik\u003C/th>\u003Cth>Kırıcı mı\u003C/th>\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\u003Ctd>Cevaba yeni alan eklemek\u003C/td>\u003Ctd>Hayır\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>İsteğe bağlı yeni parametre eklemek\u003C/td>\u003Ctd>Hayır\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>Alan adını değiştirmek\u003C/td>\u003Ctd>\u003Cstrong>Evet\u003C/strong>\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>Alanı kaldırmak\u003C/td>\u003Ctd>\u003Cstrong>Evet\u003C/strong>\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>Alanın tipini değiştirmek\u003C/td>\u003Ctd>\u003Cstrong>Evet\u003C/strong>\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>Zorunlu yeni parametre eklemek\u003C/td>\u003Ctd>\u003Cstrong>Evet\u003C/strong>\u003C/td>\u003C/tr>\n\u003C/tbody>\n\u003C/table>\n\u003Cp>Kırıcı değişiklikler sürüm üzerinden yönetilir; adres tabanlı sürümleme (\u003Ccode>/api/v1/...\u003C/code>) en yaygın ve en okunabilir yöntemdir. Eski sürümü hemen kapatmak yerine bir süre yan yana çalıştırmak ve kaldırılacağını başlıkla duyurmak, istemci ekiplerine geçiş süresi tanır.\u003C/p>\n\u003Cp>Swagger benzeri araçlarla üretilen canlı belgeler, API'yi kullanacak ekibin işini kolaylaştırdığı gibi kendi ekibiniz için de referans oluşturur. Belgelerin koddan üretilmesi ayrıca şu faydayı sağlar: \u003Cstrong>belge, gerçekte çalışan koddan sapamaz.\u003C/strong>\u003C/p>\n\n\u003Ch2>Yayına Almadan Önce Kontrol Listesi\u003C/h2>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\u003Cth>Konu\u003C/th>\u003Cth>Neden gerekli\u003C/th>\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\u003Ctd>Tüm liste uçlarında sayfalama\u003C/td>\u003Ctd>Veri büyüdükçe cevap ve bellek şişer\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>İstek hız sınırı (rate limit)\u003C/td>\u003Ctd>Tek istemci tüm kapasiteyi tüketebilir\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>Girdi doğrulama, her uçta\u003C/td>\u003Ctd>İstemciye güvenilmez\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>CORS yalnızca bilinen kaynaklara\u003C/td>\u003Ctd>Tarayıcıdan kötüye kullanımı engeller\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>Hata gövdesinde iç detay yok\u003C/td>\u003Ctd>Yığın izi saldırgana harita verir\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>Zaman alanları UTC ve ISO 8601\u003C/td>\u003Ctd>Saat dilimi hataları en sinsi hatalardır\u003C/td>\u003C/tr>\n\u003Ctr>\u003Ctd>İstek kimliği (correlation id)\u003C/td>\u003Ctd>Sorun çıktığında logda izlenebilsin\u003C/td>\u003C/tr>\n\u003C/tbody>\n\u003C/table>\n\u003Cp>Bu listenin çoğu maddesi sonradan eklenmesi zor olan şeylerdir. Özellikle sayfalama ve sürümleme, ilk günden düşünülmediğinde geri dönüşü pahalı olan iki karardır.\u003C/p>\n\n\u003Chr>\n\u003Cp>\u003Cstrong>Daha fazlası:\u003C/strong> REST API'yi temelden anlattığımız bölüm 'Her Yazılımcının Bilmesi Gerekenler' serimizde; BapatiVault serisinde ise .NET 8 ile sıfırdan bir API inşa ediyoruz.\u003C/p>\n\u003Cp>\u003Ca href='/videos/rest-api-json-nasil-calisir-endpoint-metotlar-json-token'>Videoyu sitemizde izle\u003C/a> &nbsp;·&nbsp; \u003Ca href='https://youtu.be/EjQdMpsb4ak' target='_blank' rel='noopener'>YouTube'da aç\u003C/a> &nbsp;·&nbsp; \u003Ca href='https://www.youtube.com/@BapatiTech' target='_blank' rel='noopener'>Kanala abone ol\u003C/a>\u003C/p>\u003Chr>\u003Cp>\u003Cstrong>Daha fazlası:\u003C/strong> REST API kavramlarını uygulamalı gösterdiğimiz videoyla konuyu pekiştirebilirsiniz.\u003C/p>\u003Cp>\u003Ca href='/videos/rest-api-json-nasil-calisir-endpoint-metotlar-json-token'>Videoyu sitemizde izle\u003C/a> &nbsp;·&nbsp; \u003Ca href='https://youtu.be/EjQdMpsb4ak' target='_blank' rel='noopener'>YouTube'da aç\u003C/a> &nbsp;·&nbsp; \u003Ca href='https://www.youtube.com/@BapatiTech?sub_confirmation=1' target='_blank' rel='noopener'>Bapati kanalına abone ol\u003C/a>\u003C/p>","REST API nedir, nasıl tasarlanır? Endpoint, HTTP metotları, durum kodları ve JSON yapısını örneklerle ve sık yapılan hatalarla ele alıyoruz.","https://img.youtube.com/vi/EjQdMpsb4ak/hqdefault.jpg","REST API nedir, nasıl çalışır? Endpoint, HTTP metotları, durum kodları ve JSON yapısı örneklerle ve sık yapılan hatalarla birlikte anlatılıyor.","rest api, api, endpoint, http metotları, json, jwt, token, durum kodları, backend geliştirme, web servisi, api tasarımı",true,"2026-07-27T22:02:00",null,0,6,"ea4ea297-567a-491b-ac52-37db0674498b","bf107cba-1ea4-4e09-9e30-a60b696c80cd","Backend Geliştirme",[],false,"2026-07-27T19:02:02.9718141","2026-08-23T13:45:16.7722595",[],1789725852009]