Впервые опубликовано в блоге 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 интерфейса:
- Документация показывает:
генерация документа
-
На сервере DEVQA настроены запланированные задачи (
crontab -l
Вид), документ регенерируется каждые 1 минуту. -
При создании нового интерфейсного модуля,
- Необходимо изменить запланированное задание
crontab -e
; - Добавлена навигация в шаблоне apidoc
vim /usr/lib/node_modules/apidoc/template/index.html
;
- Необходимо изменить запланированное задание
На что следует обратить внимание при тестировании API
- Определен ли интерфейс в строгом соответствии с этой спецификацией;
- Обработка ошибок является всеобъемлющей, и никакие ошибки не могут быть пропущены.Неправильное сообщение должно быть кратким и четким и содержать указания, такие как "время открытия составляет 1-5 дней, пожалуйста, введите повторно";
- В порядке ли контроль разрешений интерфейса и есть ли угроза безопасности;
- Полностью ли согласованы интерфейсный документ и реализация; - Имя, тип, необязательные и описание параметров запроса должны быть точными и знакомыми;
- Имена, типы и описания возвращаемых параметров должны быть точными и подробными.