مستندات API — Swagger
فینچ یک generator مستندات OpenAPI/Swagger داخلی دارد. Endpoint ها را مستقیماً در کدهای Dart با annotation مشخص کنید.
راهاندازی
۱. یک ApiController بسازید
import 'package:finch/finch_route.dart';
class UserApiController extends ApiController {
@override
String get apiTitle => 'API کاربران';
@override
String get apiVersion => '1.0.0';
@ApiDoc(
summary: 'دریافت تمام کاربران',
description: 'لیست تمام کاربران فعال را برمیگرداند',
parameters: [
ApiParameter(name: 'page', in_: 'query', type: 'integer'),
ApiParameter(name: 'limit', in_: 'query', type: 'integer'),
],
responses: [
ApiResponse(statusCode: 200, description: 'موفق'),
ApiResponse(statusCode: 401, description: 'احراز هویت نشده'),
],
)
Future<String> getUsers() async {
// ...
return rq.renderData(data: users);
}
}
۲. Route ها را ثبت کنید
router.get('/api/users', UserApiController().getUsers);
۳. ApiDoc را متصل کنید
FinchConfigs(
enableApiDoc: true,
apiDocPath: '/api/docs',
)
UI مستندات در /api/docs در دسترس است.
ApiParameter
| فیلد | نوع | توضیح |
|---|---|---|
name |
String |
نام پارامتر |
in_ |
String |
'query'، 'path'، 'header'، 'body' |
type |
String |
نوع داده (مثال: 'string'، 'integer') |
required |
bool |
آیا اجباری است (پیشفرض: false) |
description |
String? |
توضیح اختیاری |
ApiResponse
ApiResponse(
statusCode: 201,
description: 'کاربر ایجاد شد',
schema: {'type': 'object', 'properties': {'id': {'type': 'integer'}}},
)
میانبرهای از پیشتعریفشده
فینچ annotation های کوتاهشدهای دارد:
@ApiGet(summary: 'دریافت آیتم')
@ApiPost(summary: 'ایجاد آیتم')
@ApiPut(summary: 'بروزرسانی آیتم')
@ApiDelete(summary: 'حذف آیتم')