Skip to content

Latest commit

 

History

History
109 lines (97 loc) · 6.88 KB

File metadata and controls

109 lines (97 loc) · 6.88 KB

Парсер документации API

Image alt


Пример кода

/*= @group Название группы - Описание группы */

/*= @interface */
interface File {
    path: string;
    size: number,
    isDir: boolean
}

/*=
* @schema CustomError {
*   code {#number};
*   message {#string}
* } - Описание схемы ошибки
*/

/*=
* @name Роут для тестов
* @desc Ваше описание роута
*
* @path /path/to/{route}?={id}
* @type POST
*
* @param route - Ваше описание
* @query id {#number}
* @permissions TEST_1, TEST_2
*
* @header Authorization {#string} - Ключ авторизации
* @header Optional-Header? {#your_custom_type} - Поддержка нескольких Header-ов
*
* @body {
*   id? {#number} - Опциональное поле;
*   test {
*       test2 {#number | #string} - Поддержка нескольких типов;
*       id {#number}
*   }
* }
*
* @error 10013 { #CustomError } - Код ошибки, тип и описание
* @success 20001 {
*    files { #File[] } - Массивы
* } - Код успешного запроса, тип и описание
*/

Syntax

  • OADP* - это аббривеатура Obvilion API Docs Parser

OADP использует многострочный комментарий с определенным префиксом (по умолчанию =), его можно легко изменить в конфиге. Кроме этого поддерживаются блоки с кодом как и со звездочками на каждой новой строке, так и без них.

/*= 
* @аргумент имя {тип} - описание
*/

Строку в вышеуказанном коде мы можем разбить на четыре части:

  1. @аргумент, он обязательно должен начинаться с символа @. Этот аргумент указывает, за что отвечает следующая строка кода. Не может содержать пробелов.
  2. имя необходим, для того чтобы указывать некоторый текст в наш блок кода. Обычно используется для указания названия обьекта.
  3. {тип} находится в фигурных скобках, и обозначает обьект или его тип. О типах мы поговорим ниже.
  4. - описание пишется после символа -, может содержать множество слов. Есть поддержка форматирования текста.

/*= 
* @body {
*   id? {#number} - Опциональное поле;
*   test {
*       test2 {#number | #string} - Поддержка нескольких типов;
*       id {#CustomSchema}
*   }
* }
*/
  • Давайте теперь разберём создание обьектов. В данном случае мы указываем, что в body нужно использовать данный JSON обьект. Внутри фигурных скобок мы видим множество других переменных.
  • Знак вопроса ? в конце названия переменной означает, что данная переменная не является обязательной и отутствие данного значения в вашем API не будет восприниматься как ошибка.
  • Все конечные типы должны записываться с знаком решетки # перед названием типа. Имеется поддержка нескольких типов через разграничивающий символ |
  • Далее идет описание, оно является опциональным, и его писать не обязательно.
  • Обратите внимание, что все обьявленные значения должны заканчиваться разграничительным символом ;, за исключением последнего значения в блоке фигурных скобок {}

Все аргументы и их описание

Аргумент Описание Флаги
@interface Вы можете преобразовать ваш interface, написанный на языке TypeScript в схему -
@schema Преобразует блок документации в схему <name> <type> [description]
@group Создает группу запросов с указанным именем и описанием. Можно использовать несколько раз в одном файле. <name> [description]
@name Устанавливает название тестируемому запросу <name>
@desc Устанавливает описание тестируемому запросу <name>
@path Устанавливает путь URL к тестируемому запросу <name>
@param Устанавливает свойтва параметра в пути URL запроса <name> [type] [description]
@query Устанавливает свойтва query-парметра в пути URL запроса <name> [type] [description]
@type Устанавливает метод запроса (GET, POST, DELETE...) <name>
@body Устанавливает обьект в body запроса <type>
@header Добавляет в запрос header <name> [type] [description]
@permissions Устанавливает необходимые permissions для выполнения запроса <name>
@error Указывает обьект, который возращается при ошибке выполнения запроса. Можно использовать несколько раз. <name> [type] [description]
@success Указывает обьект, который возращается при успешном выполнении запроса. Можно использовать несколько раз. <name> [type] [description]