🖥 Render API

Външен интерфейс за рендиране на отчети — ползван от WPF настолното приложение.

Render API е HTTP интерфейс, който позволява външни клиенти (като WPF настолното приложение) да генерират и визуализират FastReports отчети през уеб сървъра. Това спестява необходимостта WPF да има собствено report rendering — използва се сървърното.

Как работи (поток)

  1. WPF клиентът подготвя данни за отчета във вид на XML DataSet.
  2. Прави HTTP POST към /api/reports/sessions с името на template-а (напр. stokova.frx) и XML-а.
  3. Сървърът:
    • Валидира template-а (трябва да съществува в wwwroot/reports/)
    • Парсва XML-а в DataSet
    • Създава временна session със GUID и TTL
    • Връща JSON с sessionId и renderUrl
  4. WPF отваря renderUrl в embedded WebView2 / Chromium браузър.
  5. Страницата /render/{guid} зарежда FastReports viewer-а с данните от сесията.
  6. Потребителят преглежда, експортва или принтира отчета.
  7. Сесиите се автоматично почистват от ReportSessionCleanupService след изтичане на TTL.
Render viewer
Embedded FastReports viewer във WPF приложението

API endpoint

POST /api/reports/sessions

Request body (JSON):

{
  "template": "stokova.frx",
  "dataXml": "<?xml version='1.0'?><DataSource>...</DataSource>"
}

Response (200 OK):

{
  "sessionId": "a1b2c3d4-...",
  "renderUrl": "https://host/render/a1b2c3d4-...",
  "expiresAt": "2026-05-13T15:30:00Z"
}

Възможни грешки:

Защита

Endpoint-ът е AllowAnonymous — не изисква cookie authentication, защото е предназначен за външни клиенти. За production трябва да се добави:

Внимание: Текущата имплементация не валидира кой и откъде вика endpoint-а. За production deploy това трябва да бъде укрепено.

Където е имплементирано