Впервые опубликовано в блоге fxm5547
Подробно ознакомьтесь с официальной документацией apiDoc.
- Подробно читайте официальную документацию:apidocjs.com
Структура файла apiDoc в проекте
-
вся рамка
-
apidoc.json -
common.php- Определение общедоступной секции — разрешения (apiPermission)
- определение
- использовать
- определение
- Определение общего раздела — группировка кодов состояния (apiSuccess, apiError)
- определение
- использовать
- определение
- определение общедоступного раздела — ответ об ошибке (apiError, apiErrorExample)
- определение
- использовать
- определение
- Определение общедоступной секции — разрешения (apiPermission)
-
define.php- определение общедоступного раздела - группировка API
- определение
- использовать
Определение apidoc для конкретного интерфейса
-
Последний интерфейс определяется в реализации кода, а предыдущая версия определяется в apidoc/history.php.
-
Интерфейс определяет полный пример:
-
@apiVersion -
В настоящее время используются только основные и второстепенные, а patch всегда равен 0.
-
@apiName- от
@apiОпределение переводится как: как@apiза:@api {put} /user/babies/:baby_id 修改宝宝信息, но@apiNameза:@apiName put/user/babies/:baby_id, Тогда проанализированный идентификатор;put_user_babies__baby_id(Для интерфейса ORDER, отсортированного по Apidoc.json).
- от
-
@apiGroup- Группировка интерфейсов, определенная в
apidoc/define.php,как@apiGroup babyGroup.
- Группировка интерфейсов, определенная в
-
@apiPermission- Разрешения интерфейса, определенные в
apidoc/common.php, разрешения делятся на:-
none: авторизация не требуется; -
token: Требуется авторизация входа в систему пользователя, которая может быть доступен черезheader AuthorizationиCookie HBSIDперечислить; -
admintoken: требуется авторизация администратора для входа, доступ к которой можно получить черезheader AuthorizationиCookie HBCPSIDперечислить; -
token || admintoken: Допускается либо авторизация входа пользователя, либо авторизация входа администратора; -
sign: требует подписи, обычно используется для взаимных вызовов между серверами, см. подробностиПодпись API HMAC-SHA1.
-
- Разрешения интерфейса, определенные в
-
@apiDescription- Объясните назначение интерфейса и связанную с ним логику как можно подробнее, например:
@apiDescription 使用手机号找回密码的第一步,调用该接口先验证用户输入的手机号是否已经绑定某个帐号,未绑定给出提示,已经绑定则发送验证码、重置密码.
- Объясните назначение интерфейса и связанную с ним логику как можно подробнее, например:
-
@apiParam- Точно определить типы данных;
- Точно определите диапазон значений, например
{String{1..32}},{String{YYYY-mm-dd}},{String="0","1"}; - Точно определите, является ли это необязательным параметром, необязательным параметром с
[],как@apiParam {String} [stage];
-
@apiError- общедоступная ошибка, используйте напрямую
apidoc/common.phpОшибки, определенные в , такие как@apiUse InvalidToken; -
NotFoundиValidationErrorобщедоступная ошибка определения не допускается (т.е. недоступна@apiUse), необходимо точно определить конкретные ошибки, например:
- общедоступная ошибка, используйте напрямую
-
@apiSampleRequest- GET интерфейс: не писать, использовать по умолчанию
apidoc.jsonизsampleUrlАдрес запроса на автоматическую сборку - Другие интерфейсы:
@apiSampleRequest offмы используем почтальон
- GET интерфейс: не писать, использовать по умолчанию
группировка интерфейсов
- Как правило, сгруппированные по функциональным модулям, одна группа соответствует одному или нескольким файлам php, и каждый файл php соответствует только одной группе;
- Все разрешения
admintokenинтерфейс (за исключением разрешений дляtoken || admintokenинтерфейс), размещенный в интерфейсном модулеИнтерфейс центра управлениягруппировка,admin.phpв файле; - Все разрешения
signинтерфейс (кроме модуля SMS), размещенный в интерфейсном модулеВнутренний сервисный интерфейсгруппировка,internal.phpв файле;
Интерфейс управления версиями
-
В той же основной версии, только когда изменения вашего интерфейса повлияют на вызывающую сторону, вам необходимо обновить вспомогательную версию (если в модифицированной версии нет вызывающей стороны, естественно, нет необходимости обновлять версию), например, с 1.0.0 до 1.1.0.
-
При обновлении версии нужно скопировать старые комментарии apidoc в
apidoc/history.php, и обновитьapiVersion -
При обновлении основной версии интерфейса скопируйте каталог файлов старой версии как новую версию и обновите версию интерфейса (например, скопируйте v1, переименуйте ее в v2 и измените все интерфейсы в новой версии на
2.0.0Версия). -
Вызывающий может легко узнать, какие изменения были внесены в новую версию, путем сравнения версий при просмотре документа.
-
Устаревший интерфейс, маркировка
@apiDeprecated, указывающий, какие интерфейсы следует использовать вместо этого:- Добавьте перед просроченным комментарием apidoc интерфейса:
- Документация показывает:
- Добавьте перед просроченным комментарием apidoc интерфейса:
генерация документа
-
На сервере DEVQA настроены запланированные задачи (
crontab -lВид), документ регенерируется каждые 1 минуту. -
При создании нового интерфейсного модуля,
- Необходимо изменить запланированное задание
crontab -e; - Добавлена навигация в шаблоне apidoc
vim /usr/lib/node_modules/apidoc/template/index.html;
- Необходимо изменить запланированное задание
На что следует обратить внимание при тестировании API
- Определен ли интерфейс в строгом соответствии с этой спецификацией;
- Обработка ошибок является всеобъемлющей, и никакие ошибки не могут быть пропущены.Неправильное сообщение должно быть кратким и четким и содержать указания, такие как "время открытия составляет 1-5 дней, пожалуйста, введите повторно";
- В порядке ли контроль разрешений интерфейса и есть ли угроза безопасности;
- Полностью ли согласованы интерфейсный документ и реализация; - Имя, тип, необязательные и описание параметров запроса должны быть точными и знакомыми;
- Имена, типы и описания возвращаемых параметров должны быть точными и подробными.