08.02.2025

1

Beğenme

60

Görüntülenme

HTTP Metotları ve API İstekleri

Temelden başlayalım. API nedir?

API (Uygulama Programlama Arayüzü), iki uygulamanın belirli tanımlar aracılığıyla birbiriyle iletişim kurmasına fırsat veren bir yazılım aracıdır. API, bir uygulamanın verilere, sunucu yazılımlarına ve diğer programlara ulaşabilmek için kullandığı bir bağlantı arayüzüdür.

API’ler, veri alışverişini hızlı ve pratik bir şekilde halletmemizi sağlar.

API kullanım alanlarına örnek verecek olursak:

Diyelim ki, bir uygulama geliştiriyorsun ve bu uygulamada kullanıcıların bilgilerini göstermek istiyorsun. Kullanıcı bilgileri, başka bir sunucuda bulunan bir veri tabanında tutuluyor ve bu verilere erişmek için bir API kullanıyorsun.

Adım 1: API’ye İstek Gönderme

Uygulaman, sunucuda bulunan API’ye bir istek gönderir. Örneğin, kullanıcıların listesini almak istiyorsan, bu durumda bir GET isteği kullanırsın. GET isteği, “Bana bu verileri getir” anlamına gelir.

Adım 2: API Yanıtını Alma

API, senin gönderdiğin GET isteğini işler ve veritabanından kullanıcı bilgilerini alır. Bu bilgileri genellikle JSON formatında sana geri gönderir. Bu JSON verisi, kullanıcıların adlarını, e-posta adreslerini ve diğer bilgilerini içerir.

Adım 3: Verileri Kullanma

Uygulaman, API’den gelen bu JSON verisini alır ve kullanıcıya göstermek için işler. Örneğin, gelen veriyi bir liste şeklinde ekranda gösterebilirsin.

Web tabanlı API’ler için:

  • HTTP protokolü: Web tarayıcı ve web sunucu arasında iletişim kurmamızı sağlar.
  • SOAP API’leri için XML: Veri iletişimi için kullanılır.
  • REST API’leri için JSON: Hafif ve okunması kolay bir veri formatıdır.

HTTP Metotları

  1. GET

Bu metot, sunucudan veri almak için kullanılır. Örnek olarak, bir web sitesinden kullanıcı bilgilerini almak istiyorsak, GET isteği göndeririz.

GET metodu ile sorgu metinleri URL içinde gönderilebilir. Bunun faydası, kullanıcıların sorguları yer işaretlerine ekleyebilmesi ve aynı sorguyu tekrar gönderebilmesidir. Ancak güvenlik açısından, URL’lerin ekranda görünüyor olması, gönderilen parametrelerin gizlilik ihtiyacı varsa problem yaratabilir. Bu sebeple güvenlik konusunda hassas istekler GET metodu ile gönderilmemelidir.

Fetch API ile GET İsteği Yapmak:

fetch('https://jsonplaceholder.typicode.com/posts/1', {
method: 'GET'
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));

Axios ile GET İsteği Yapmak:

axios.get('https://jsonplaceholder.typicode.com/posts/1')
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error('GET isteği sırasında bir hata oluştu:', error);
});

2. POST

Bu metot, sunucuya veri göndermek için kullanılır. Örneğin, yeni bir kullanıcı oluşturmak veya bir formu sunucuya göndermek için POST isteğini kullanırız.

POST metodunda istek parametreleri genellikle mesaj gövdesinde gönderilir, bu da GET metodunda sayılan riskleri engeller. Tarayıcılar geri butonuna basıldığında POST isteğinin mesaj gövdesinde yer alan parametreleri tekrar göndermek isteyip istemediğimizi sorarlar. Bu, bir işlemi yanlışlıkla birden fazla yapmayı engeller. Bu özellik sebebiyle güvenlik gerekçeleriyle bir işlem gerçekleştirileceğinde POST metodunun kullanılması önerilir.

Fetch API ile POST İsteği Yapmak:

const apiUrl = 'https://jsonplaceholder.typicode.com/posts';

const postData = {
title: 'foo',
body: 'bar',
userId: 1
};

fetch(apiUrl, {
method: 'POST', // POST methodunu belirtiriz
headers: {
'Content-Type': 'application/json', // JSON formatında veri gönderileceğini belirtiriz
},
body: JSON.stringify(postData) // Veriyi JSON formatında göndeririz
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));

Axios ile POST İsteği Yapmak:

const postData = {
title: 'Yeni Post',
body: 'Bu bir test postudur.',
userId: 1
};

axios.post('https://jsonplaceholder.typicode.com/posts', postData)
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error('POST isteği sırasında bir hata oluştu:', error);
});

3. PUT

Mevcut bir kaynağı güncellemek için kullanılır. Hangi kaynağı güncelleyeceksek onun ID’sini göndeririz.

Fetch API ile PUT İsteği Yapmak:

const apiUrl = 'https://jsonplaceholder.typicode.com/posts/1'; // Güncellenecek kaynağın URL'si

const updateData = {
title: 'updated title',
body: 'updated body',
userId: 1
};

fetch(apiUrl, {
method: 'PUT', // PUT methodunu belirtiriz
headers: {
'Content-Type': 'application/json', // JSON formatında veri gönderileceğini belirtiriz
},
body: JSON.stringify(updateData) // Veriyi JSON formatında göndeririz
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));

Axios ile PUT İsteği Yapmak:

const updateData = {
title: 'Güncellenmiş Post',
body: 'Bu post güncellenmiştir.',
userId: 1
};

axios.put('https://jsonplaceholder.typicode.com/posts/1', updateData)
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error('PUT isteği sırasında bir hata oluştu:', error);
});

4. HEAD

Bu metot, API’lerde belirli bir kaynağın var olup olmadığını kontrol etmek veya kaynak hakkında bilgi almak için kullanılır. GET metoduna çok benzer, aralarındaki fark HEAD isteğinin sunucudan sadece başlık bilgilerini alıp gövdeyi almamasıdır. Bu, sunucunun yanıt verip vermediğini kontrol etmek için oldukça kullanışlıdır.

5. DELETE

Mevcut bir kaynağı silmek için kullanılır. Örneğin, kullanıcı hesabını silmek istediğinde DELETE isteği kullanılır.

Fetch API ile DELETE İsteği Yapmak:

const apiUrl = 'https://jsonplaceholder.typicode.com/posts/1'; // Silinecek kaynağın URL'si

fetch(apiUrl, {
method: 'DELETE' // DELETE methodunu kullanıyoruz
})
.then(response => {
if (response.ok) {
console.log('Kaynak başarıyla silindi.');
} else {
console.log('Silme işlemi başarısız oldu.');
}
})
.catch(error => console.error('Error:', error));

Axios ile DELETE İsteği Yapmak:

axios.delete('https://jsonplaceholder.typicode.com/posts/1')
.then(response => {
console.log('Post başarıyla silindi:', response.data);
})
.catch(error => {
console.error('DELETE isteği sırasında bir hata oluştu:', error);
});

6. CONNECT

Bu metot, bir istemci ile bir sunucu arasında iki yönlü bir iletişim kanalı oluşturmak için kullanılır. Genellikle proxy sunucular üzerinde güvenli bağlantılar kurmak için kullanılır. İstemci ve hedef sunucu arasındaki iletişim şifreli bir tünel üzerinden gerçekleşir.

7. OPTIONS

Bu metot, bir istemcinin sunucuya belirli bir kaynak üzerinde hangi HTTP metotlarının kullanılabileceğini sormasını sağlar. Örneğin, bir web sayfası başka bir domain’den veri çekmeye çalıştığında, tarayıcı önce OPTIONS isteği göndererek sunucunun bu isteği kabul edip etmeyeceğini kontrol eder.

8. TRACE

TRACE metodu, istemci tarafından gönderilen bir HTTP isteğinin, sunucuya ulaşana kadar geçtiği tüm ara aşamaları (proxy, gateway vb.) ve sunucuya ulaştıktan sonra geri dönerken geçtiği yolu görmeyi sağlar. TRACE metodu, güvenlik riskleri taşıdığı için modern uygulamalarda genellikle devre dışı bırakılır.

9. PATCH

PATCH metodu, bir kaynağın sadece belirli alanlarını güncellemek için kullanılır. Örneğin, bir kullanıcının sadece e-posta adresini güncellemek istediğinde PATCH metodunu kullanabilirsin.

REST API

Yorumlar

Kullanıcı yorumlarını görüntüleyebilmek için kayıt olmalısınız!

Zeynep Cıplak

Merhaba, ben Zeynep Cıplak. Beykent Üniversitesi Yazılım Mühendisliği bölümünden mezun oldum ve özellikle frontend geliştirme alanına odaklandım. React, TypeScript, HTML, CSS ve JavaScript konularında deneyim sahibiyim. SabancıDx’te Frontend Developer stajı yaparak, modüler yapı, performans optimizasyonu ve kullanıcı deneyimi konularında çalıştım. Ayrıca ekip çalışması ve Agile metodolojileri konusunda deneyim kazandım. Yenilikçi projelerde yer alarak kendimi geliştirmeye ve kullanıcı odaklı arayüzler oluşturmaya büyük bir ilgi duyuyorum. 🚀

Konum

İstanbul, TR

Eğitim

Yazılım Mühendisliği - Beykent Üniversitesi

İş Tecrübesi

Front-end developer intern - SabancıDx

Front-end developer intern - Greenverse Software

© 2021 Patika Dev

facebook
twitter
instagram
youtube
linkedin

Disclaimer: The information /programs / events provided on https://patika.dev and https://risein.com are strictly for upskilling and networking purposes related to the technical infrastructure of blockchain platforms. We do not provide financial or investment advice and do not make any representations regarding the value, profitability, or future price of any blockchain or cryptocurrency. Users are encouraged to conduct their own research and consult with licensed financial professionals before engaging in any investment activities. https://patika.dev and https://risein.com disclaim any responsibility for financial decisions made by users based on information provided here.