Объект Resource
Все дерево Apipie состоит из объектов resource.
Apipie почти не содержит какую-либо логику для обработки метода, но обрабатывает url через path-to-regexp, а дальше он просто передает эти параметры в axios.
{
name: 'foo',
options: {},
meta: { auth: true },
hooks: [
async (ctx, next) => {
if (ctx.meta.auth) {
// do magic
}
await next()
}
],
data: true,
query: true,
children: [ resource1, resource2 ]
}
Свойства объекта resource
name
тип:
string
Имя ресурса, обязательное свойство. По нему определяется, как будет называется функция для вызова.
options
- тип:
Object
Объект конфига для axios. Более подробную информацию можно получить здесь: https://github.com/mzabriskie/axios#request-config. Apipie дополнительно обрабатывает url через path-to-regexp.
- тип:
meta
- тип:
Object
Объект с мета информацией, которая будет доступна хукам (hook). Данный мета объект передается по наследству, если у родителя есть какая-та мета информация, она так же будет доступна у ребенка.
- тип:
hook
- тип:
Array<Async Function | Promise>
Хуки описываются точно так же как и в koa-middleware. Однако стоит отметить несколько отличий:
- context состоит из
meta
,response
,options
- хуки исполняются в виде цепочки промисов (Promise chaining), а это значит, что каждый хук ДОЛЖЕН возвращать промис (используйте async/await для этого)
Хуки выполняются до и после передачи в axios
- тип:
const hook = async (context, next) => {
context.response // -> null
await next();
context.response // -> { data: ... }
}
data
- тип:
Boolean
Свойство, которое определяет, является ли передача data при вызове ресурса обязательным.
- тип:
query
- тип:
Boolean
Тоже самое, что и data, только для query параметров.
- тип:
children
- тип:
Array<Resource>
Массив с ресурсами
- тип: