API Entegrasyonu
Sign UI, backend API ile OpenAPI generated client üzerinden iletişim kurar.
🤖 OpenAPI Client
Otomatik Generated Client
Backend’in OpenAPI spesifikasyonundan otomatik olarak TypeScript client generate edilir.
# API client'ı yeniden generate et
curl -s http://localhost:8085/api-docs -o openapi.json
npx openapi-typescript-codegen --input ./openapi.json --output ./src/api/generated
rm openapi.jsonYapı
src/api/generated/
├── core/ # OpenAPI client core
├── models/ # DTO type definitions
│ ├── SignPadesDto.ts
│ ├── SignXadesDto.ts
│ ├── SignWsSecurityDto.ts
│ └── ...
└── services/ # API service methods
├── PadesControllerService.ts
├── XadesControllerService.ts
└── ...🎣 Custom Hooks
useSignPDF
PDF imzalama hook’u.
import { useSignPDF } from '@/hooks/use-sign'
const { mutate: signPDF, isLoading } = useSignPDF()
signPDF({
document: file,
appendMode: false
})useSignXML
XML imzalama hook’u.
import { useSignXML } from '@/hooks/use-sign'
const { mutate: signXML } = useSignXML()
signXML({
document: file,
documentType: 'UblDocument'
})useCertificates
Sertifika listesi hook’u.
import { useCertificates } from '@/hooks/use-certificates'
const { data: certificates, isLoading } = useCertificates()useTimestamp
Timestamp hook’u.
import { useGetTimestamp } from '@/hooks/use-timestamp'
const { mutate: getTimestamp } = useGetTimestamp()
getTimestamp({
document: file,
hashAlgorithm: 'SHA256'
})⚙️ API Configuration
Base URL
src/lib/api-config.ts:
export const API_BASE_URL = import.meta.env.VITE_API_BASE_URL || 'http://localhost:8085'
OpenAPI.BASE = API_BASE_URLEnvironment Variables
.env:
VITE_API_BASE_URL=http://localhost:8085📦 Services
Generated Services
PadesControllerService- PDF imzalamaXadesControllerService- XML imzalamaCertificateInfoService- Sertifika yönetimiTimestampService- Zaman damgasıTBTakService- TÜBİTAK servisleri
Kullanım Örneği
import { PadesControllerService } from '@/api/generated'
const response = await PadesControllerService.signPades({
document: file,
appendMode: false
})🔄 React Query
State management için TanStack Query kullanılır.
const queryClient = new QueryClient({
defaultOptions: {
queries: {
refetchOnWindowFocus: false,
retry: 1,
staleTime: 5 * 60 * 1000
}
}
})📝 Type Safety
Tüm API istekleri TypeScript tip güvenliği ile:
// DTO'lar otomatik generate edilir
const signRequest: SignPadesDto = {
document: file,
appendMode: false
}
// Type-safe API call
const response = await PadesControllerService.signPades(signRequest)