Proje: Okul Platform · Hub: Okul Platform — Conventions

Swagger Altyapısı

darkaonline/l5-swagger — DarkaOnline L5 Swagger paketi. app/Swagger/ dizininde tüm Swagger tanımları.

Swagger Dizin Yapısı

app/Swagger/
├── Admin/        — Admin endpoint tanımları
├── Customer/     — Customer endpoint tanımları
├── General/      — General endpoint tanımları
├── Models/       — Model şemaları
├── Requests/     — Request şemaları
├── Resources/    — Resource şemaları
└── Responses/    — Standart response'lar

Standart Response Tipleri

SWR\OkResponse           → 200 OK
SWR\CreateResponse       → 201 Created
SWR\NoContentResponse    → 204 No Content
SWR\BadRequestResponse   → 400 Bad Request
SWR\UnauthorizedResponse → 401 Unauthorized
SWR\ForbiddenResponse    → 403 Forbidden
SWR\NotFoundResponse     → 404 Not Found
SWR\UnprocessableEntityResponse → 422 Unprocessable
SWR\FailResponse         → Genel hata
SWR\PaginatedResponse    → Sayfalanmış liste
SWR\SuccessResponse      → Genel başarı

Controller Kullanımı

use App\Swagger\Responses as SWR;
 
#[OA\Get(
    path: '/admin/schools',
    tags: ['Schools'],
    responses: [
        new SWR\PaginatedResponse(ref: '#/components/schemas/SchoolResource'),
        new SWR\UnauthorizedResponse(),
        new SWR\ForbiddenResponse(),
    ],
)]
#[OA\Parameter(name: 'filter[school_id]', in: 'query')]

OpenAPI Attribute’ları

PHP 8.1+ native attribute’ları kullanılıyor (annotation yerine):

  • #[OA\Get(...)], #[OA\Post(...)], #[OA\Put(...)], #[OA\Delete(...)]
  • #[OA\Parameter(...)]
  • #[OA\RequestBody(...)]

PHPStan Swagger Exclusion

phpstan.neon.dist: app/Swagger/* coverage’dan hariç.