API Servis Yapısı

Dosya Konumu: src/services/api.ts

Bu sayfada API isteklerinin nasıl tanımlandığı ve bu servislerin proje genelinde nasıl kullanıldığı örneklerle açıklanmaktadır.


1. API Tanımları (src/services/api.ts)

1.1 POST – Departman Oluşturma

static async createDepartment(data: any): Promise<any> {
  return this.request<any>('/departments', {
    method: 'POST',
    body: JSON.stringify(data),
  });
}

Yeni bir departman oluşturmak için POST isteği gönderir.


1.2 PUT – Departman Güncelleme

static async updateDepartment(departmentId: string, data: any) {
  return this.putApi(`departments/${departmentId}`, data);
}

Belirli bir departmanı güncellemek için kullanılır.


1.3 DELETE – Departman Silme

static async deleteDepartment(departmentId: string) {
  return this.deleteApi(`departments/${departmentId}`);
}

Belirli bir departmanı silmek için kullanılır.


2. Gerçek Kullanım Örnekleri

2.1 Listeleme – Departmanları Getirme

useEffect(() => {
  const fetchDepartments = async () => {
    try {
      const res = await ApiService.getApi('departments');
      setDepartments(res.data || []);
    } catch (err) {
      console.error('Departmanlar yüklenemedi:', err);
    }
  };

  fetchDepartments();
}, []);

Departmanları listelemek için getApi metodu çağrılır.

🔒 Not: getApi yerine getDepartment, getUsers, getSurveys gibi isimlendirilmiş metotların kullanılması önerilir. Bu sayede:

  • Her API uç noktasına özel yetkilendirme yapılabilir,
  • Kod okunabilirliği ve bakımı kolaylaşır.

2.2 Oluşturma – Yeni Departman Kaydı

try {
  await ApiService.createDepartment({
    name: form.name,
    description: form.description,
    parentId: form.parentId || undefined,
    color: form.color,
    isDefault: form.isDefault,
    metadata: form.metadata,
  });
  setSuccess('Departman başarıyla oluşturuldu!');
  setTimeout(() => navigate('/employees'), 1500);
} catch (err: any) {
  setError(err.message || 'Departman oluşturulamadı.');
} finally {
  setLoading(false);
}

Form verileriyle yeni bir departman oluşturur. Başarılı işlem sonrası kullanıcı yönlendirilir.


2.3 Güncelleme – Var Olan Departmanı Güncelleme

try {
  await ApiService.updateDepartment(departmentId, {
    name: form.name,
    description: form.description,
    parentId: form.parentId || undefined,
    color: form.color,
    isDefault: form.isDefault,
    metadata: form.metadata,
  });
  setSuccess('Departman başarıyla güncellendi!');
} catch (err: any) {
  setError(err.message || 'Departman güncellenemedi.');
} finally {
  setLoading(false);
}

Mevcut bir departmanın güncellenmesini sağlar.


2.4 Silme – Departman Silme

const handleDelete = async () => {
  if (!confirmDelete) {
    setConfirmDelete(true);
    return;
  }
  if (!departmentId) {
    setError('Departman ID bulunamadı.');
    return;
  }
  setLoading(true);
  setError('');
  setSuccess('');
  try {
    await ApiService.deleteDepartment(departmentId);
    setSuccess('Departman silindi!');
    setTimeout(() => navigate('/empoyless'), 1500);
  } catch (err: any) {
    setError(err.message || 'Departman silinemedi.');
  } finally {
    setLoading(false);
    setConfirmDelete(false);
  }
};

Silme işlemi kullanıcı onayı alındıktan sonra gerçekleştirilir. Başarılıysa yönlendirme yapılır.


3. Özet Tablosu

İşlem Metot Açıklama
Listeleme getApi('departments') Departman listesini getirir
Oluşturma createDepartment(data) Yeni departman oluşturur
Güncelleme updateDepartment(id, data) Var olan departmanı günceller
Silme deleteDepartment(id) Belirtilen departmanı siler

results matching ""

    No results matching ""