Версия:

Документирование

В системе имеется механизм автоматического сбора документации в формате openAPI. Она выводится в виде HTML-страницы с помощью Swagger UI по адресу /api-docs.

Вы также можете скачать файл спецификации по URL /api-docs/download и использовать его во внешних инструментах.

Большинство методов требуют авторизации, поэтому при использовании документации сперва выполните метод User.login, а полученный JWT укажите в секции авторизации (кнопка Authorize в правом верхнем углу страницы).

Документация формируется для методов классов на основе дженериков входных и выходных параметров. Также в документацию попадает документирующий комментарий. Типы и интерфейсы, за исключением базовых типов, попадают в раздел схем документации.

Чтобы метод попал в документацию, необходимо обозначить его декоратором @OpenApi() непосредственно над функцией (после документирующего комментария).

Если параметр в дженерике будет анонимным, то есть описание объекта в фигурных скобках, то все используемые внутри собственные типы и интерфейсы будут полностью раскрыты в итоговой документации, что иногда может быть не очень удобно для чтения. Если хотите чтобы там осталось имя типа/интерфейса, создайте его и подставьте в дженерик.

Пример с анонимным типом/интерфейсом:

@OpenApi()  
async create(r: IAPIRequest<{  
   orders: ICreatePmntOrder[]  
   for_user_id?: number  
}>)

Пример с вынесенным типом/интерфейсом:

export interface ICreatePaymentRequest {  
   orders: ICreatePmntOrder[]  
   for_user_id?: number  
}

@OpenApi()  
async create(r: IAPIRequest<ICreatePaymentRequest>):

Сборка документации осуществляется командой “node ./openAPI/openApi.js”, в package.json имеется соответствующий скрипт.

Итоговый файл располагается в openAPI/swagger.yaml. Он каждый раз пересоздается, поэтому его не следует править руками.

Пожалуйста, пишите достаточный документирующий комментарий для функций. Также пишите комментарии к параметрам, если их поведение не является очевидным или не описано выше. Если вы пишите какий-нибудь модуль, желательно в начале файла расписать логику работы и граничные условия. Если по проекту ведется отдельная документация, поддерживайте ее в актуальном состоянии по согласованию с руководителем проекта/тимлидом.