Önemli: Diğer yazılarımla direkt bağlantılı bir yazıdır. İlk olarak bu yazıdan okumaya başladıysanız, eğitim serisine kısaca bir göz atmanızı tavsiye ederim.
Merhabalar.
Bir önceki yazımda projemizi oluşturmuştuk. Artık bir Get isteği atıp verilerimizi çekelim.
Öncelikle Fetch API Get isteğinin genel yapısını görelim detaylarına bakalım.
Fetch API Get İsteği Genel Yapı
fetch
API, web tarayıcılarında ve Node.js ortamında kullanılabilen bir JavaScript API’sidir ve ağ üzerinden kaynaklara HTTP istekleri göndermek ve almak için kullanılır. İşte basit bir GET
isteğinin yapısı:
fetch('hedef_url')
.then(response => {
// Sunucudan gelen cevap başarıyla alındı
if (!response.ok) {
throw new Error('Network response was not ok');
}
return response.json(); // Cevabı JSON formatına çevir
})
.then(data => {
// JSON verileri üzerinde çalış
console.log(data);
})
.catch(error => {
// Hata durumunda işlemler
console.error('Fetch error:', error);
});
Bu örnek, bir URL’ye basit bir GET
isteği gönderir. İlk olarak, fetch
fonksiyonu ile istek yapılır. Ardından, gelen cevap kontrol edilir, başarılıysa cevap JSON formatına çevrilir ve isteğin sonucu üzerinde işlem yapılır. Eğer bir hata olursa, catch
bloğu hata durumuyla başa çıkar.
Şimdi BlogPost.jsx kodlarımıza tekrardan bir bakalım ve fonksiyonumuzu eklemeye çalışalım.
import React, { useState } from 'react'
import './BlogPost.css'
const BlogPost = () => {
const [posts, setPosts] = useState([]);
return (
<div className="blogPost">
<button onClick={loadPosts}>Load Posts</button>
{posts.map((post) => (
<div key={post.id} className="post">
<h2>{post.title}</h2>
<p>{post.body}</p>
</div>
))}
</div>
);
}
export default BlogPost
Butonumuza bir onClick event’i ekledim ve loadPosts isminde bir fonksiyona bağladım.
Bu fonksiyon Get isteğini /posts endpoint’ine atıp verileri getirecek.
const loadPosts = () => {
fetch('https://jsonplaceholder.typicode.com/posts')
.then(response => {
if (!response.ok) {
throw new Error('Network response was not ok');
}
return response.json();
})
.then(data => {
setPosts(data);
})
.catch(error => {
console.error('Fetch error:', error);
});
};
Aşama aşama gidelim:
fetch('https://jsonplaceholder.typicode.com/posts')
: fetch
fonksiyonu, belirtilen URL’den veri çekmeyi başlatıyor. Bu durumda, JSONPlaceholder’ın post verilerini içeren endpoint’e bir HTTP GET isteği yapılıyor.
.then(response => {
: fetch
işlemi tamamlandığında, bir response
objesi döner. İlk .then
bloğu, bu yanıtı ele alır.
if (!response.ok) { throw new Error('Network response was not ok'); }
: Eğer yanıtın durumu (HTTP durum kodu) “ok” değilse (örneğin, 404 Not Found veya 500 Internal Server Error gibi), bir hata fırlatılır.
return response.json();
: Eğer yanıt başarılıysa, yanıtın içindeki JSON verilerini çözerek bir Promise döndürülür.
.then(data => { setPosts(data); })
: JSON verileri çözüldükten sonra, bu .then
bloğu, çözülen verileri alır ve setPosts
fonksiyonunu kullanarak bu verileri işler. Bu kısmı uygulamanın durumunu güncellemek veya başka bir işlem yapmak için kullanabilirsiniz.
.catch(error => { console.error('Fetch error:', error); });
: Eğer herhangi bir aşamada bir hata olursa, bu .catch
bloğu çalışır. Hata konsola yazdırılır.
İşte ilk get isteğimizi attık ve verilerimizi aldık.
Sayfaya gider Load Posts butonuna tıklarsam aşağıdaki gibi bir görüntü elde ederim.
Böylece bir API’dan ilk verilerimizi getirebilmiş olduk.
Bir sonraki yazımda görüşmek üzere.