راهنمای مستندسازی API و Swagger
به راهنمای مستندسازی API و Swagger فینچ خوش آمدید! این راهنما شما را با مراحل مستندسازی API برنامه فینچ و یکپارچهسازی Swagger برای مستندسازی تعاملی آشنا میکند. چه توسعهدهنده حرفهای باشید یا تازهکار، فینچ مجموعهای قدرتمند از ابزارها را برای سادهسازی توسعه وباپلیکیشن سمت سرور ارائه میدهد.
تعریف مستندات API
مستندسازی API شامل ۳ بخش اصلی است:
- افزودن Swagger به مسیرها
- افزودن مسیر ApiDoc
- تعریف ApiDoc برای هر مسیر
فینچ راه سادهای برای مستندسازی نقاط پایانی API با استفاده از کلاس ApiDoc فراهم میکند. این کلاس به شما اجازه میدهد پارامترها، بدنه درخواست و ساختار پاسخ را برای نقاط پایانی API تعریف کنید. مثال:
کنترلر مستندسازی API
final apiController = ApiController(
title: "مستندات API",
app: app,
);
// مسیرهایی که باید به روتینگ FinchApp اضافه شوند
// خروجی OpenApi json
FinchRoute(
key: 'root.api.docs',
path: 'api/docs',
index: apiController.indexPublic,
),
// Swagger UI
FinchRoute(
key: 'root.swagger',
path: 'swagger',
index: () => apiController.swagger(rq.url('api/docs')),
),
تعریف ApiDoc برای هر مسیر
class ApiDocuments {
static Future<ApiDoc> onePerson() async {
return ApiDoc(
post: ApiDoc(
response: {
'200': [
ApiResponse<int>('timestamp_start', def: 0),
ApiResponse<bool>('success', def: true),
ApiResponse<Map<String, String>>(
'data',
def: PersonCollectionFree.formPerson.fields.map((k, v) {
return MapEntry(k, v.defaultValue?.call());
}),
),
],
'404': r_404,
},
description: "بهروزرسانی یک شخص با شناسه.",
parameters: [
ApiParameter<String>(
'id',
isRequired: true,
paramIn: ParamIn.path,
),
ApiParameter<String>(
'name',
isRequired: false,
paramIn: ParamIn.header,
),
ApiParameter<int>(
'age',
isRequired: false,
paramIn: ParamIn.header,
),
ApiParameter<double>(
'height',
isRequired: false,
paramIn: ParamIn.header,
),
ApiParameter<String>(
'email',
isRequired: true,
paramIn: ParamIn.header,
),
ApiParameter<String>(
'married',
isRequired: false,
paramIn: ParamIn.header,
def: false,
),
],
),
get: ApiDoc(
response: {
'200': [
ApiResponse<int>('timestamp_start', def: 0),
ApiResponse<Map<String, String>>(
'data',
def: PersonCollectionFree.formPerson.fields.map((k, v) {
return MapEntry(k, v.defaultValue?.call());
}),
),
],
'404': r_404,
},
description: "دریافت یک شخص با شناسه.",
parameters: [
ApiParameter<String>('id', isRequired: true, paramIn: ParamIn.path),
],
),
delete: ApiDoc(
response: {
'200': [
ApiResponse<int>('timestamp_start', def: 0),
ApiResponse<bool>('success', def: true),
],
'404': r_404,
},
description: "حذف یک شخص با شناسه.",
parameters: [
ApiParameter<String>('id', isRequired: true, paramIn: ParamIn.path),
],
),
);
}
}
/// افزودن ApiDoc به مسیرها (مثال)
FinchRoute(
key: 'root.person.show',
path: 'api/person/{id}',
extraPath: ['example/person/{id}'],
index: homeController.onePerson,
methods: Methods.GET_POST,
apiDoc: ApiDocuments.onePerson,
),