پرش به مطلب اصلی

دکوراتورها (Decorators)

دکوراتورها در چارچوب کیمیا ابزاری قدرتمند برای تعریف مسیرهای API، مستندسازی و کنترل دسترسی هستند.

دسته‌بندی دکوراتورها

دکوراتورهای مسیر API

دکوراتورهایی برای تعریف مسیرهای HTTP مانند api.get, api.post, api.put و غیره.

دکوراتورهای Swagger

دکوراتورهایی برای مستندسازی API در Swagger/OpenAPI مانند swagger.summary, swagger.parameters و غیره.

دکوراتورهای کنترل دسترسی

دکوراتورهایی برای بررسی مجوزهای کاربر مانند check.adminAccess, check.systemAccess.

نحوه استفاده

دکوراتورها را می‌توان به صورت ترکیبی استفاده کرد:

export class UserApi extends ApplicationApi {
@swagger.summary('دریافت لیست کاربران')
@swagger.parametersWithPagination([
{ name: 'search', type: 'string' }
])
@swagger.OkArrayResponseTSInterface('UserInterface')
@api.get('/users')
async getUsers() {
return await this.getAllUsers();
}

@check.adminAccess('دسترسی ادمین لازم است')
@swagger.summary('ایجاد کاربر جدید')
@swagger.bodyParameterWithTSInterface('UserCreateInterface')
@swagger.OkResponseTSInterface('UserInterface')
@api.post('/users')
async createUser(@body() userData: UserCreateInterface) {
return await this.createNewUser(userData);
}
}

نکات مهم

  • دکوراتورها به ترتیب از بالا به پایین اجرا می‌شوند
  • دکوراتورهای کنترل دسترسی قبل از اجرای متد بررسی می‌شوند
  • دکوراتورهای Swagger فقط برای مستندسازی استفاده می‌شوند و روی عملکرد API تأثیر ندارند