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:
getApiyerinegetDepartment,getUsers,getSurveysgibi 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 |